Kısa ses için metne konuşma REST API'si

Kısa ses için Konuşmayı metne dönüştürme REST API'sinin kullanım örnekleri sınırlıdır. Bunu yalnızca Konuşma SDK'sını kullanamıyorsanız kullanın.

Kısa ses için REST API'sine metin eklemek için Konuşma özelliğini kullanmadan önce aşağıdaki sınırlamaları göz önünde bulundurun:

Kısa ses için Konuşmayı metne dönüştürme REST API'sini kullanmadan önce, hizmete erişmek için kimlik doğrulamasının bir parçası olarak belirteç değişimini tamamlamanız gerektiğini anlayın. Daha fazla bilgi için bkz. Kimlik doğrulaması.

Bölgeler ve uç noktalar

Kısa ses için REST API uç noktası şu biçime sahiptir:

https://<REGION_IDENTIFIER>.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1

değerini Konuşma kaynağınızın bölgesiyle eşleşen tanımlayıcıyla değiştirin<REGION_IDENTIFIER>.

Not

21Vianet uç noktaları tarafından sağlanan Azure Kamu ve Microsoft Azure için bağımsız bulutlar hakkındaki bu makaleye bakın.

Ses biçimleri

Ses, HTTP POST isteğinin gövdesinde gönderilir. Bu tablodaki biçimlerden birinde olmalıdır:

Biçimlendir Codec Bit hızı Örnekleme hızı
WAV PCM 256 kb/sn 16 kHz, mono
OGG OPUS 256 kb/sn 16 kHz, mono

Not

Önceki biçimler REST API aracılığıyla kısa ses ve Konuşma hizmetinde WebSocket için desteklenir. Konuşma SDK'sı, PCM codec bileşeni ile WAV biçimini ve diğer biçimleri destekler.

İstek üst bilgileri

Bu tabloda, metin isteklerine konuşma için gerekli ve isteğe bağlı üst bilgiler listeleniyor:

Üst bilgi Açıklama Gerekli veya isteğe bağlı
Ocp-Apim-Subscription-Key Konuşma hizmeti için kaynak anahtarınız. Bu üst bilgi veya Authorization gereklidir.
Authorization sözcüğünden önce gelen yetkilendirme belirteci Bearer. Daha fazla bilgi için bkz. Kimlik doğrulaması. Bu üst bilgi veya Ocp-Apim-Subscription-Key gereklidir.
Pronunciation-Assessment Tanıma sonuçlarında söyleniş puanlarını göstermek için parametreleri belirtir. Bu puanlar, doğruluk, akıcılık ve eksiksizlik gibi göstergelerle konuşma girişinin söyleniş kalitesini değerlendirir.

Bu parametre, birden çok ayrıntılı parametre içeren Base64 ile kodlanmış bir JSON'dir. Bu üst bilginin nasıl derleneceğinizi öğrenmek için bkz . Söyleniş değerlendirme parametreleri.
İsteğe bağlı
Content-type Sağlanan ses verilerinin biçimini ve codec bileşenini açıklar. Kabul edilen değerler ve audio/ogg; codecs=opusdeğerleridiraudio/wav; codecs=audio/pcm; samplerate=16000. Zorunlu
Transfer-Encoding Tek bir dosya yerine öbeklenmiş ses verilerinin gönderildiğini belirtir. Bu üst bilgiyi yalnızca ses verilerini öbeklerken kullanın. İsteğe bağlı
Expect Öbekli aktarım kullanıyorsanız gönderin Expect: 100-continue. Konuşma hizmeti ilk isteği kabul eder ve daha fazla veri bekler. Öbeklenmiş ses verileri gönderiyorsanız gereklidir.
Accept Sağlanırsa, olmalıdır application/json. Konuşma hizmeti JSON ile sonuç sağlar. Bazı istek çerçeveleri uyumsuz bir varsayılan değer sağlar. her zaman dahil Acceptetmek iyi bir uygulamadır. İsteğe bağlı, ancak önerilir.

Sorgu parametreleri

Bu parametreler REST isteğinin sorgu dizesine eklenebilir.

Not

4xx HTTP hatası almamak için DIL parametresini URL'ye eklemeniz gerekir. Örneğin, Batı ABD uç noktası üzerinden ABD İngilizcesi olarak ayarlanan dil: https://westus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US.

Parametre Açıklama Gerekli veya isteğe bağlı
language Tanınmakta olan konuşulan dili tanımlar. Bkz. Desteklenen diller. Zorunlu
format Sonuç biçimini belirtir. Kabul edilen değerler ve detaileddeğerleridirsimple. Basit sonuçlar arasında RecognitionStatus, DisplayText, Offsetve Durationbulunur. Ayrıntılı yanıtlar, görüntüleme metninin dört farklı gösterimini içerir. Varsayılan ayar simple değeridir. İsteğe bağlı
profanity Tanıma sonuçlarında küfürlerin nasıl işleneceğini belirtir. Kabul edilen değerler şunlardır:

masked, küfür yerine yıldız işareti ekler.
removed, sonuçtan tüm küfürleri kaldırır.
raw, sonuçta küfür içerir.

Varsayılan ayar masked değeridir.
İsteğe bağlı
cid Özel modeller oluşturmak için Speech Studio'yu kullanırken Dağıtım sayfasından Uç Nokta Kimliği değerinden yararlanabilirsiniz. Sorgu dizesi parametresinin bağımsız değişkeni cid olarak Uç Nokta Kimliği değerini kullanın. İsteğe bağlı

Söyleniş değerlendirme parametreleri

Bu tabloda söyleniş değerlendirmesi için gerekli ve isteğe bağlı parametreler listelenir:

Parametre Açıklama Gerekli veya isteğe bağlı
ReferenceText Söylenişin değerlendirıldığı metin. Zorunlu
GradingSystem Puan kalibrasyonu için puan sistemi. Sistem FivePoint 0-5 kayan nokta puanı verir ve HundredMark 0-100 kayan nokta puanı verir. Varsayılan: FivePoint. İsteğe bağlı
Granularity Değerlendirme ayrıntı düzeyi. Kabul edilen değerler şunlardır:

Phoneme, tam metin, sözcük ve telefon ses düzeylerindeki puanı gösterir.
Word, tam metin ve sözcük düzeylerindeki puanı gösterir.
FullText, puanı yalnızca tam metin düzeyinde gösterir.

Varsayılan ayar Phoneme değeridir.
İsteğe bağlı
Dimension Çıkış ölçütlerini tanımlar. Kabul edilen değerler şunlardır:

Basic, yalnızca doğruluk puanını gösterir.
Comprehensive, daha fazla boyuttaki puanları gösterir (örneğin, tam metin düzeyinde akıcılık puanı ve tamlık puanı ve sözcük düzeyinde hata türü).

Farklı puan boyutlarının tanımlarını ve sözcük hata türlerini görmek için bkz . Yanıt özellikleri. Varsayılan ayar Basic değeridir.
İsteğe bağlı
EnableMiscue Yanlış hesaplamayı etkinleştirir. Bu parametre etkinleştirildiğinde, telaffuz edilen sözcükler başvuru metniyle karşılaştırılır. Bunlar, karşılaştırmaya göre atlama veya ekleme ile işaretlenir. Kabul edilen değerler ve TruedeğerleridirFalse. Varsayılan ayar False değeridir. İsteğe bağlı
ScenarioId Özelleştirilmiş bir nokta sistemini gösteren GUID. İsteğe bağlı

Söyleniş değerlendirme parametrelerini içeren örnek JSON aşağıda verilmiştir:

{
  "ReferenceText": "Good morning.",
  "GradingSystem": "HundredMark",
  "Granularity": "FullText",
  "Dimension": "Comprehensive"
}

Aşağıdaki örnek kodda, söyleniş değerlendirme parametrelerinin üst bilgide nasıl derlendği Pronunciation-Assessment gösterilmektedir:

var pronAssessmentParamsJson = $"{{\"ReferenceText\":\"Good morning.\",\"GradingSystem\":\"HundredMark\",\"Granularity\":\"FullText\",\"Dimension\":\"Comprehensive\"}}";
var pronAssessmentParamsBytes = Encoding.UTF8.GetBytes(pronAssessmentParamsJson);
var pronAssessmentHeader = Convert.ToBase64String(pronAssessmentParamsBytes);

Ses verilerini paylaşırken akış (öbekli aktarım) yüklemesini kesinlikle öneririz; bu da gecikme süresini önemli ölçüde azaltabilir. Akışı etkinleştirmeyi öğrenmek için çeşitli programlama dillerindeki örnek koda bakın.

Not

Daha fazla bilgi için bkz . söyleniş değerlendirmesi.

Örnek isteği

Aşağıdaki örnek ana bilgisayar adını ve gerekli üst bilgileri içerir. Hizmetin bu örneğe dahil olmayan ses verilerini de beklediğine dikkat etmek önemlidir. Daha önce belirtildiği gibi öbekleme önerilir ancak gerekli değildir.

POST speech/recognition/conversation/cognitiveservices/v1?language=en-US&format=detailed HTTP/1.1
Accept: application/json;text/xml
Content-Type: audio/wav; codecs=audio/pcm; samplerate=16000
Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY
Host: westus.stt.speech.microsoft.com
Transfer-Encoding: chunked
Expect: 100-continue

Söyleniş değerlendirmesini etkinleştirmek için aşağıdaki üst bilgiyi ekleyebilirsiniz. Bu üst bilginin nasıl derleneceğinizi öğrenmek için bkz . Söyleniş değerlendirme parametreleri.

Pronunciation-Assessment: eyJSZWZlcm...

HTTP durum kodu

Her yanıtın HTTP durum kodu başarılı veya yaygın hataları gösterir.

HTTP durum kodu Açıklama Olası nedenler
100 Devam İlk istek kabul edilir. Kalan verileri göndermeye devam edin. (Bu kod öbekli aktarım ile kullanılır.)
200 Tamam İstek başarılı oldu. Yanıt gövdesi bir JSON nesnesidir.
400 Hatalı istek Dil kodu sağlanmadı, dil desteklenmiyor veya ses dosyası geçersiz (örneğin).
Kategori 401 Yetkisiz Kaynak anahtarı veya yetkilendirme belirteci belirtilen bölgede geçersiz veya uç nokta geçersiz.
403 Yasak Kaynak anahtarı veya yetkilendirme belirteci eksik.

Örnek yanıtlar

İşte tanıma için simple tipik bir yanıt:

{
  "RecognitionStatus": "Success",
  "DisplayText": "Remind me to buy 5 pencils.",
  "Offset": "1236645672289",
  "Duration": "1236645672289"
}

İşte tanıma için detailed tipik bir yanıt:

{
  "RecognitionStatus": "Success",
  "Offset": "1236645672289",
  "Duration": "1236645672289",
  "NBest": [
    {
      "Confidence": 0.9052885,
      "Display": "What's the weather like?",
      "ITN": "what's the weather like",
      "Lexical": "what's the weather like",
      "MaskedITN": "what's the weather like"
    },
    {
      "Confidence": 0.92459863,
      "Display": "what is the weather like",
      "ITN": "what is the weather like",
      "Lexical": "what is the weather like",
      "MaskedITN": "what is the weather like"
    }
  ]
}

Söyleniş değerlendirmesiyle tanımaya yönelik tipik bir yanıt aşağıda verilmişti:

{
  "RecognitionStatus": "Success",
  "Offset": "400000",
  "Duration": "11000000",
  "NBest": [
      {
        "Confidence" : "0.87",
        "Lexical" : "good morning",
        "ITN" : "good morning",
        "MaskedITN" : "good morning",
        "Display" : "Good morning.",
        "PronScore" : 84.4,
        "AccuracyScore" : 100.0,
        "FluencyScore" : 74.0,
        "CompletenessScore" : 100.0,
        "Words": [
            {
              "Word" : "Good",
              "AccuracyScore" : 100.0,
              "ErrorType" : "None",
              "Offset" : 500000,
              "Duration" : 2700000
            },
            {
              "Word" : "morning",
              "AccuracyScore" : 100.0,
              "ErrorType" : "None",
              "Offset" : 5300000,
              "Duration" : 900000
            }
        ]
      }
  ]
}

Yanıt özellikleri

Sonuçlar JSON olarak sağlanır. Biçim simple aşağıdaki üst düzey alanları içerir:

Özellik Açıklama
RecognitionStatus Başarılı tanıma gibi Success bir durum. Sonraki tabloya bakın.
DisplayText Büyük harfe çevirme, noktalama işaretleri, ters metin normalleştirmesi ve küfür maskelemeden sonra tanınan metin. Yalnızca başarı üzerine sun. Ters metin normalleştirmesi, konuşulan metnin "iki yüz" için 200 veya "doktor smith" için "Dr. Smith" gibi daha kısa biçimlere dönüştürülmesidir.
Offset Tanınan konuşmanın ses akışında başladığı süre (100 nanosaniye cinsinden).
Duration Ses akışında tanınan konuşmanın süresi (100 nanosaniye cinsinden).

Alanı RecognitionStatus şu değerleri içerebilir:

Çalıştırma Durumu Açıklama
Success Tanıma başarılı oldu ve DisplayText alan mevcut.
NoMatch Ses akışında konuşma algılandı, ancak hedef dilden hiçbir sözcük eşleşmedi. Bu durum genellikle tanıma dilinin kullanıcının konuştuğu dilden farklı olduğu anlamına gelir.
InitialSilenceTimeout Ses akışının başlangıcı yalnızca sessizlik içeriyordu ve hizmet konuşma beklerken zaman aşımına uğradı.
BabbleTimeout Ses akışının başlangıcı yalnızca gürültü içeriyordu ve konuşma beklerken hizmet zaman aşımına uğradı.
Error Tanıma hizmeti bir iç hatayla karşılaştı ve devam edemedi. Mümkünse yeniden deneyin.

Not

Ses yalnızca küfürden oluşuyorsa ve profanity sorgu parametresi olarak ayarlandıysa remove, hizmet konuşma sonucu döndürmez.

Biçim, detailed daha fazla tanınan sonuç biçimi içerir. Biçimini kullanırkendetailed, DisplayText listedeki her sonuç NBest için olduğu gibi Display sağlanır.

Listedeki nesne şunları NBest içerebilir:

Özellik Açıklama
Confidence Girişin 0,0 (güven yok) ile 1,0 (tam güvenilirlik) güvenilirlik puanı.
Lexical Tanınan metnin sözcük biçimi: tanınan gerçek sözcükler.
ITN Telefon numaraları, sayılar, kısaltmalar ("dr smith" yerine "dr smith") ve diğer dönüşümler uygulanmış, tanınan metnin ters metin normalleştirilmiş (ITN) veya kurallı biçimi.
MaskedITN İstenirse küfür maskeleme uygulanmış ITN formu.
Display Noktalama ve büyük harf kullanımı eklenmiş olarak tanınan metnin görüntüleme biçimi. Bu parametre, biçim olarak ayarlandığında simplesağladığı değerle aynıdırDisplayText.
AccuracyScore Konuşmanın söyleniş doğruluğu. Doğruluk, fonemlerin yerel konuşmacının söylenişiyle ne kadar yakın olduğunu gösterir. Sözcük ve tam metin düzeylerindeki doğruluk puanı, fone düzeyindeki doğruluk puanından toplanır.
FluencyScore Sağlanan konuşmanın akıcılığı. Akıcılık, konuşmanın yerel konuşmacının sözcükler arasındaki sessiz kesmeleri kullanmasıyla ne kadar yakın eşleşdiğini gösterir.
CompletenessScore Okunan sözcüklerin metin girişine başvurma oranını hesaplayarak belirlenen konuşmanın eksiksizliği.
PronScore Sağlanan konuşmanın söyleniş kalitesini gösteren genel puan. Bu puan, , FluencyScoreve CompletenessScore ağırlıklarından AccuracyScoretoplanır.
ErrorType bir sözcüğün atlandığını, eklendiğini veya kötü telaffuz edildiğini gösteren değer ile karşılaştırıldığında ReferenceText. Olası değerler (bu sözcükte hata olmadığı anlamına gelir), Omission, Insertionve Mispronunciationdeğerleridir None .

Öbekli aktarım

Öbekli aktarım (Transfer-Encoding: chunked) tanıma gecikme süresini azaltmaya yardımcı olabilir. Konuşma hizmetinin, iletilirken ses dosyasını işlemeye başlamasını sağlar. Kısa ses için REST API kısmi veya ara sonuçlar sağlamaz.

Aşağıdaki kod örneğinde öbekler halinde ses gönderme gösterilmektedir. Yalnızca ilk öbek ses dosyasının üst bilgisini içermelidir. request , uygun REST uç noktasına bağlı bir HttpWebRequest nesnedir. audioFile , disk üzerindeki bir ses dosyasının yoludur.

var request = (HttpWebRequest)HttpWebRequest.Create(requestUri);
request.SendChunked = true;
request.Accept = @"application/json;text/xml";
request.Method = "POST";
request.ProtocolVersion = HttpVersion.Version11;
request.Host = host;
request.ContentType = @"audio/wav; codecs=audio/pcm; samplerate=16000";
request.Headers["Ocp-Apim-Subscription-Key"] = "YOUR_RESOURCE_KEY";
request.AllowWriteStreamBuffering = false;

using (var fs = new FileStream(audioFile, FileMode.Open, FileAccess.Read))
{
    // Open a request stream and write 1,024-byte chunks in the stream one at a time.
    byte[] buffer = null;
    int bytesRead = 0;
    using (var requestStream = request.GetRequestStream())
    {
        // Read 1,024 raw bytes from the input audio file.
        buffer = new Byte[checked((uint)Math.Min(1024, (int)fs.Length))];
        while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
        {
            requestStream.Write(buffer, 0, bytesRead);
        }

        requestStream.Flush();
    }
}

Kimlik Doğrulaması

Her istek için bir yetkilendirme üst bilgisi gerekir. Bu tabloda her özellik için hangi üst bilgilerin desteklendiği gösterilmektedir:

Desteklenen yetkilendirme üst bilgisi Konuşmayı metne dönüştürme Metin okuma
Ocp-Apim-Subscription-Key Yes Evet
Authorization: Bearer Evet Yes

Üst bilgiyi kullanırken Ocp-Apim-Subscription-Key yalnızca kaynak anahtarınızı sağlamanız gerekir. Örneğin:

'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'

Üst bilgiyi kullanırken Authorization: Bearer uç noktaya bir istekte issueToken bulunmanız gerekir. Bu istekte, kaynak anahtarınızı 10 dakika boyunca geçerli olan bir erişim belirteci ile değiştirirsiniz.

Erişim belirteci alma

Erişim belirteci almak için issueToken ve kaynak anahtarınızı kullanarak Ocp-Apim-Subscription-Key uç noktaya bir istekte bulunmanız gerekir.

issueToken nokta şu biçime sahiptir:

https://<REGION_IDENTIFIER>.api.cognitive.microsoft.com/sts/v1.0/issueToken

değerini aboneliğinizin bölgesiyle eşleşen tanımlayıcıyla değiştirin<REGION_IDENTIFIER>.

Erişim belirteci isteğinizi oluşturmak için aşağıdaki örnekleri kullanın.

HTTP örneği

Bu örnek, belirteç almak için basit bir HTTP isteğidir. değerini Konuşma hizmeti için kaynak anahtarınızla değiştirin YOUR_SUBSCRIPTION_KEY . Aboneliğiniz Batı ABD bölgesinde değilse üst bilgiyi bölgenizin ana bilgisayar adıyla değiştirin Host .

POST /sts/v1.0/issueToken HTTP/1.1
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY
Host: eastus.api.cognitive.microsoft.com
Content-type: application/x-www-form-urlencoded
Content-Length: 0

Yanıtın gövdesi, erişim belirtecini JSON Web Belirteci (JWT) biçiminde içerir.

PowerShell örneği

Bu örnek, erişim belirteci almak için basit bir PowerShell betiğidir. değerini Konuşma hizmeti için kaynak anahtarınızla değiştirin YOUR_SUBSCRIPTION_KEY . Aboneliğinizle eşleşen bölge için doğru uç noktayı kullandığınızdan emin olun. Bu örnek şu anda Batı ABD olarak ayarlanmıştır.

$FetchTokenHeader = @{
  'Content-type'='application/x-www-form-urlencoded';
  'Content-Length'= '0';
  'Ocp-Apim-Subscription-Key' = 'YOUR_SUBSCRIPTION_KEY'
}

$OAuthToken = Invoke-RestMethod -Method POST -Uri https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken
 -Headers $FetchTokenHeader

# show the token received
$OAuthToken

cURL örneği

cURL, Linux'ta (ve Linux için Windows Alt Sistemi) kullanılabilen bir komut satırı aracıdır. Bu cURL komutu, erişim belirtecinin nasıl alınacaklarını gösterir. değerini Konuşma hizmeti için kaynak anahtarınızla değiştirin YOUR_SUBSCRIPTION_KEY . Aboneliğinizle eşleşen bölge için doğru uç noktayı kullandığınızdan emin olun. Bu örnek şu anda Batı ABD olarak ayarlanmıştır.

curl -v -X POST \
 "https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken" \
 -H "Content-type: application/x-www-form-urlencoded" \
 -H "Content-Length: 0" \
 -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY"

C# örneği

Bu C# sınıfı, erişim belirtecinin nasıl alınıyor olduğunu gösterir. Sınıfın örneğini oluştururken Konuşma hizmeti için kaynak anahtarınızı geçirin. Aboneliğiniz Batı ABD bölgesinde değilse değerini aboneliğinizin bölgesiyle eşleşecek şekilde değiştirin FetchTokenUri .

public class Authentication
{
    public static readonly string FetchTokenUri =
        "https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken";
    private string subscriptionKey;
    private string token;

    public Authentication(string subscriptionKey)
    {
        this.subscriptionKey = subscriptionKey;
        this.token = FetchTokenAsync(FetchTokenUri, subscriptionKey).Result;
    }

    public string GetAccessToken()
    {
        return this.token;
    }

    private async Task<string> FetchTokenAsync(string fetchUri, string subscriptionKey)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
            UriBuilder uriBuilder = new UriBuilder(fetchUri);

            var result = await client.PostAsync(uriBuilder.Uri.AbsoluteUri, null);
            Console.WriteLine("Token Uri: {0}", uriBuilder.Uri.AbsoluteUri);
            return await result.Content.ReadAsStringAsync();
        }
    }
}

Python örneği

# Request module must be installed.
# Run pip install requests if necessary.
import requests

subscription_key = 'REPLACE_WITH_YOUR_KEY'


def get_token(subscription_key):
    fetch_token_url = 'https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken'
    headers = {
        'Ocp-Apim-Subscription-Key': subscription_key
    }
    response = requests.post(fetch_token_url, headers=headers)
    access_token = str(response.text)
    print(access_token)

Erişim belirtecini kullanma

Erişim belirteci, hizmete üst bilgi olarak Authorization: Bearer <TOKEN> gönderilmelidir. Her erişim belirteci 10 dakika boyunca geçerlidir. İstediğiniz zaman yeni bir belirteç alabilirsiniz, ancak ağ trafiğini ve gecikme süresini en aza indirmek için aynı belirteci dokuz dakika boyunca kullanmanızı öneririz.

Kısa ses için Konuşmayı metne dönüştürme REST API'sine yönelik örnek bir HTTP isteği aşağıda verilmiştir:

POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: westus.stt.speech.microsoft.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive

// Message body here...

Sonraki adımlar