Konuşmayı metne dönüştürme ile çalışmaya başlamaGet started with speech-to-text

Konuşma hizmetinin temel özelliklerinden biri de insan konuşmanızı tanıyabilme ve (genellikle konuşma-metin olarak adlandırılır).One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Bu hızlı başlangıçta, uygulama ve ürünlerinize yönelik konuşma SDK 'sını kullanarak yüksek kaliteli bir konuşmayı metne dönüştürme işlemini nasıl gerçekleştireceğinizi öğreneceksiniz.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

GitHub 'da örneklere atlayınSkip to samples on GitHub

Örnek koda doğrudan atlamak istiyorsanız GitHub 'daki C# hızlı başlangıç örneklerine bakın.If you want to skip straight to sample code, see the C# quickstart samples on GitHub.

ÖnkoşullarPrerequisites

Bu makalede bir Azure hesabınız ve konuşma hizmeti aboneliğiniz olduğunu varsaymaktadır.This article assumes that you have an Azure account and Speech service subscription. Hesabınız ve aboneliğiniz yoksa konuşma hizmetini ücretsiz deneyin.If you don't have an account and subscription, try the Speech service for free.

Konuşma SDK 'sını yüklerInstall the Speech SDK

Yalnızca paket adının başlatılmasını istiyorsanız Install-Package Microsoft.CognitiveServices.Speech NuGet konsolunda çalıştırın.If you just want the package name to get started, run Install-Package Microsoft.CognitiveServices.Speech in the NuGet console.

Platforma özgü yükleme yönergeleri için aşağıdaki bağlantılara bakın:For platform-specific installation instructions, see the following links:

Konuşma yapılandırması oluşturmaCreate a speech configuration

Konuşma SDK 'sını kullanarak konuşma hizmetini çağırmak için bir oluşturmanız gerekir SpeechConfig .To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Bu sınıf, uygulamanız hakkında, anahtarınız ve ilgili bölge, uç nokta, ana bilgisayar veya yetkilendirme belirteci gibi bilgileri içerir.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. SpeechConfigAnahtarınızı ve bölgenizi kullanarak oluşturun.Create a SpeechConfig by using your key and region. Bölge tanımlarınızı bulmak için bölge desteği sayfasına bakın.See the region support page to find your region identifier.

using Microsoft.CognitiveServices.Speech;

var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

Şunları başlatabilmeniz için birkaç farklı yol vardır SpeechConfig :There are a few other ways that you can initialize a SpeechConfig:

  • Uç nokta ile: bir konuşma hizmeti uç noktasında geçirin.With an endpoint: pass in a Speech service endpoint. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.A key or authorization token is optional.
  • Bir ana bilgisayar ile: bir konak adresini geçirin.With a host: pass in a host address. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.A key or authorization token is optional.
  • Yetkilendirme belirteci ile: bir yetkilendirme belirtecini ve ilişkili bölgeyi geçirin.With an authorization token: pass in an authorization token and the associated region.

Not

Konuşma tanıma, konuşma birleştirme, çeviri veya amaç tanıma işlemlerini gerçekleştirmekten bağımsız olarak her zaman bir yapılandırma oluşturacaksınız.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Mikrofondan tanıRecognize from microphone

Cihaz mikrofonunuzu kullanarak konuşmayı tanımak için bir AudioConfig kullanarak oluşturun FromDefaultMicrophoneInput() .To recognize speech using your device microphone, create an AudioConfig using FromDefaultMicrophoneInput(). Ardından, ve ' yi geçirerek bir başlatın SpeechRecognizer audioConfig speechConfig .Then initialize a SpeechRecognizer, passing your audioConfig and speechConfig.

using Microsoft.CognitiveServices.Speech.Audio;

using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

Console.WriteLine("Speak into your microphone.");
var result = await recognizer.RecognizeOnceAsync();
Console.WriteLine($"RECOGNIZED: Text={result.Text}");

Belirli bir ses giriş cihazını kullanmak istiyorsanız, IÇINDE cihaz kimliği belirtmeniz gerekir AudioConfig .If you want to use a specific audio input device, you need to specify the device ID in the AudioConfig. Ses giriş cihazınız için CIHAZ kimliğini nasıl alabileceğinizi öğrenin.Learn how to get the device ID for your audio input device.

Dosyadan tanıRecognize from file

Konuşmayı bir mikrofon yerine bir ses dosyasından tanımak istiyorsanız, yine de oluşturmanız gerekir AudioConfig .If you want to recognize speech from an audio file instead of a microphone, you still need to create an AudioConfig. Ancak, AudioConfig öğesini çağırmak yerine, FromDefaultMicrophoneInput() FromWavFileInput() dosya yolunu çağırır ve geçitirsiniz.However, when you create the AudioConfig, instead of calling FromDefaultMicrophoneInput(), you call FromWavFileInput() and pass the file path.

using Microsoft.CognitiveServices.Speech.Audio;

using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

var result = await recognizer.RecognizeOnceAsync();
Console.WriteLine($"RECOGNIZED: Text={result.Text}");

Konuşma tanımaRecognize speech

C# için konuşma SDK 'Sı için tanıyıcı sınıfı , konuşma tanıma için kullanabileceğiniz birkaç yöntem sunar.The Recognizer class for the Speech SDK for C# exposes a few methods that you can use for speech recognition.

Tek atışı tanımaSingle-shot recognition

Tek basamaklı tanıma, tek bir söylik zaman uyumsuz olarak tanır.Single-shot recognition asynchronously recognizes a single utterance. Tek bir utterüance 'in sonunda, sonda sessizlik dinlemesi veya en fazla 15 saniyelik ses işlenene kadar belirlenir.The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed. Şu kullanılarak zaman uyumsuz tek kararlı tanıma örneği aşağıda verilmiştir RecognizeOnceAsync :Here's an example of asynchronous single-shot recognition using RecognizeOnceAsync:

var result = await recognizer.RecognizeOnceAsync();

Sonucu işlemek için bazı kodlar yazmanız gerekir.You'll need to write some code to handle the result. Bu örnek şunları değerlendirir result.Reason :This sample evaluates the result.Reason:

  • Tanınma sonucunu yazdırır: ResultReason.RecognizedSpeechPrints the recognition result: ResultReason.RecognizedSpeech
  • Bir tanıma eşleşmesi yoksa, kullanıcıyı bilgilendirin: ResultReason.NoMatchIf there is no recognition match, inform the user: ResultReason.NoMatch
  • Bir hata ile karşılaşırsanız, hata iletisini yazdırın: ResultReason.CanceledIf an error is encountered, print the error message: ResultReason.Canceled
switch (result.Reason)
{
    case ResultReason.RecognizedSpeech:
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
        Console.WriteLine($"    Intent not recognized.");
        break;
    case ResultReason.NoMatch:
        Console.WriteLine($"NOMATCH: Speech could not be recognized.");
        break;
    case ResultReason.Canceled:
        var cancellation = CancellationDetails.FromResult(result);
        Console.WriteLine($"CANCELED: Reason={cancellation.Reason}");

        if (cancellation.Reason == CancellationReason.Error)
        {
            Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}");
            Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}");
            Console.WriteLine($"CANCELED: Did you update the subscription info?");
        }
        break;
}

Sürekli tanımaContinuous recognition

Sürekli tanıma, tek kararlı tanıma göre biraz daha karmaşıktır.Continuous recognition is a bit more involved than single-shot recognition. Recognizing Recognized Tanıma sonuçlarını almak için,, ve olaylarına abone olmanızı gerektirir Canceled .It requires you to subscribe to the Recognizing, Recognized, and Canceled events to get the recognition results. Tanımayı durdurmak için çağrısı yapmanız gerekir StopContinuousRecognitionAsync .To stop recognition, you must call StopContinuousRecognitionAsync. İşte, bir ses giriş dosyasında sürekli tanımanın nasıl gerçekleştirilebileceğini gösteren bir örnek.Here's an example of how continuous recognition is performed on an audio input file.

Girişi tanımlayarak ve şunu başlatarak başlayalım SpeechRecognizer :Let's start by defining the input and initializing a SpeechRecognizer:

using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

Sonra, konuşma tanımanın durumunu yönetmek için bir değişken oluşturalım.Next, let's create a variable to manage the state of speech recognition. Başlamak için, TaskCompletionSource<int> önceki bildirimlerden sonra bir bildirir.To start, we'll declare a TaskCompletionSource<int> after the previous declarations.

var stopRecognition = new TaskCompletionSource<int>();

Kaynağından gönderilen olaylara abone olun SpeechRecognizer .Subscribe to the events sent from the SpeechRecognizer.

  • Recognizing: Ara tanıma sonuçları içeren olaylar için sinyal.Recognizing: Signal for events containing intermediate recognition results.
  • Recognized: Son tanıma sonuçlarını içeren olaylar için sinyal (başarılı bir tanıma denemesi olduğunu gösterir).Recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • SessionStopped: Bir tanıma oturumunun (işlem) sonunu gösteren olaylar için sinyal.SessionStopped: Signal for events indicating the end of a recognition session (operation).
  • Canceled: İptal edilen tanıma sonuçlarını içeren olaylar için sinyal (sonuç veya doğrudan iptal isteği olarak iptal edilen bir tanıma girişimi veya ya da bir aktarım ya da protokol arızası).Canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
recognizer.Recognizing += (s, e) =>
{
    Console.WriteLine($"RECOGNIZING: Text={e.Result.Text}");
};

recognizer.Recognized += (s, e) =>
{
    if (e.Result.Reason == ResultReason.RecognizedSpeech)
    {
        Console.WriteLine($"RECOGNIZED: Text={e.Result.Text}");
    }
    else if (e.Result.Reason == ResultReason.NoMatch)
    {
        Console.WriteLine($"NOMATCH: Speech could not be recognized.");
    }
};

recognizer.Canceled += (s, e) =>
{
    Console.WriteLine($"CANCELED: Reason={e.Reason}");

    if (e.Reason == CancellationReason.Error)
    {
        Console.WriteLine($"CANCELED: ErrorCode={e.ErrorCode}");
        Console.WriteLine($"CANCELED: ErrorDetails={e.ErrorDetails}");
        Console.WriteLine($"CANCELED: Did you update the subscription info?");
    }

    stopRecognition.TrySetResult(0);
};

recognizer.SessionStopped += (s, e) =>
{
    Console.WriteLine("\n    Session stopped event.");
    stopRecognition.TrySetResult(0);
};

Her şey ayarlandığında, çağırabiliriz StopContinuousRecognitionAsync .With everything set up, we can call StopContinuousRecognitionAsync.

// Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
await recognizer.StartContinuousRecognitionAsync();

// Waits for completion. Use Task.WaitAny to keep the task rooted.
Task.WaitAny(new[] { stopRecognition.Task });

// Stops recognition.
await recognizer.StopContinuousRecognitionAsync();

Dikte etme moduDictation mode

Sürekli tanıma kullanırken, ilgili "dikte etmeyi etkinleştir" işlevini kullanarak dikte işlemini etkinleştirebilirsiniz.When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. Bu mod, konuşma yapılandırma örneğinin noktalama gibi tümce yapılarının sözcük açıklamalarını yorumlamasını sağlar.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Örneğin, "kasadaki gerçek zamanlı olarak", "kasadaki canlı mısınız?" metni olarak yorumlanabilir.For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Dikte modunu etkinleştirmek için, içindeki EnableDictation yöntemi kullanın SpeechConfig .To enable dictation mode, use the EnableDictation method on your SpeechConfig.

speechConfig.EnableDictation();

Kaynak dilini değiştirChange source language

Konuşma tanıma için ortak bir görev, giriş (veya kaynak) dilini belirtmektir.A common task for speech recognition is specifying the input (or source) language. Giriş dilini Italyanca olarak nasıl değiştirebileceğinizi göz atalım.Let's take a look at how you would change the input language to Italian. Kodunuzda, SpeechConfig daha sonra bu satırı hemen altına ekleyin.In your code, find your SpeechConfig, then add this line directly below it.

speechConfig.SpeechRecognitionLanguage = "it-IT";

SpeechRecognitionLanguageÖzelliği, bir dil yerel ayar dizesi bekliyor.The SpeechRecognitionLanguage property expects a language-locale format string. Desteklenen yerel ayarlar/dillerlistesindeki yerel ayar sütununda herhangi bir değer sağlayabilirsiniz.You can provide any value in the Locale column in the list of supported locales/languages.

Tanıma doğruluğunu geliştirmeImprove recognition accuracy

Konuşma SDK 'Sı ile tanıma doğruluğunu geliştirmenin birkaç yolu vardır.There are a few ways to improve recognition accuracy with the Speech SDK. Tümcecik listelerine göz atalım.Let's take a look at Phrase Lists. Tümcecik listeleri, bir kişinin adı veya belirli bir konum gibi, ses verilerinde bilinen tümcecikleri belirlemek için kullanılır.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Tek sözcükler veya bütün ifadeler, bir tümcecik listesine eklenebilir.Single words or complete phrases can be added to a Phrase List. Tanıma sırasında, tüm tümcecik için tam eşleşme sese dahil olursa tümcecik listesindeki bir giriş kullanılır.During recognition, an entry in a phrase list is used if an exact match for the entire phrase is included in the audio. Tümcecikle tam eşleşme bulunamazsa, tanıma yardımlı değildir.If an exact match to the phrase is not found, recognition is not assisted.

Önemli

Tümcecik listesi özelliği yalnızca Ingilizce olarak kullanılabilir.The Phrase List feature is only available in English.

Bir tümcecik listesi kullanmak için, önce bir PhraseListGrammar nesne oluşturun, ardından ile belirli sözcükler ve deyimler ekleyin AddPhrase .To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with AddPhrase.

Herhangi bir değişiklik PhraseListGrammar , bir sonraki tanıma göre veya konuşma hizmetine yeniden bağlanmaya sonra devreye girer.Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

var phraseList = PhraseListGrammar.FromRecognizer(recognizer);
phraseList.AddPhrase("Supercalifragilisticexpialidocious");

Tümcecik listenizi temizlemeniz gerekirse:If you need to clear your phrase list:

phraseList.Clear();

Tanıma doğruluğunu artırmak için diğer seçeneklerOther options to improve recognition accuracy

Tümcecik listeleri, tanıma doğruluğunu artırmak için yalnızca bir seçenektir.Phrase lists are only one option to improve recognition accuracy. Aşağıdakileri de yapabilirsiniz:You can also:

Konuşma hizmetinin temel özelliklerinden biri de insan konuşmanızı tanıyabilme ve (genellikle konuşma-metin olarak adlandırılır).One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Bu hızlı başlangıçta, uygulama ve ürünlerinize yönelik konuşma SDK 'sını kullanarak yüksek kaliteli bir konuşmayı metne dönüştürme işlemini nasıl gerçekleştireceğinizi öğreneceksiniz.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

GitHub 'da örneklere atlayınSkip to samples on GitHub

Örnek koda doğrudan atlamak istiyorsanız GitHub 'daki C++ hızlı başlangıç örneklerine bakın.If you want to skip straight to sample code, see the C++ quickstart samples on GitHub.

ÖnkoşullarPrerequisites

Bu makalede bir Azure hesabınız ve konuşma hizmeti aboneliğiniz olduğunu varsaymaktadır.This article assumes that you have an Azure account and Speech service subscription. Hesabınız ve aboneliğiniz yoksa konuşma hizmetini ücretsiz deneyin.If you don't have an account and subscription, try the Speech service for free.

Konuşma SDK 'sını yüklerInstall the Speech SDK

Herhangi bir şey yapabilmeniz için önce konuşma SDK 'sını yüklemeniz gerekir.Before you can do anything, you'll need to install the Speech SDK. Platformunuza bağlı olarak, aşağıdaki yönergeleri kullanın:Depending on your platform, use the following instructions:

Konuşma yapılandırması oluşturmaCreate a speech configuration

Konuşma SDK 'sını kullanarak konuşma hizmetini çağırmak için bir oluşturmanız gerekir SpeechConfig .To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Bu sınıf, uygulamanız hakkında, anahtarınız ve ilgili bölge, uç nokta, ana bilgisayar veya yetkilendirme belirteci gibi bilgileri içerir.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. SpeechConfigAnahtarınızı ve bölgenizi kullanarak oluşturun.Create a SpeechConfig by using your key and region. Bölge tanımlarınızı bulmak için bölge desteği sayfasına bakın.See the region support page to find your region identifier.

using namespace std;
using namespace Microsoft::CognitiveServices::Speech;

auto config = SpeechConfig::FromSubscription("YourSubscriptionKey", "YourServiceRegion");

Şunları başlatabilmeniz için birkaç farklı yol vardır SpeechConfig :There are a few other ways that you can initialize a SpeechConfig:

  • Uç nokta ile: bir konuşma hizmeti uç noktasında geçirin.With an endpoint: pass in a Speech service endpoint. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.A key or authorization token is optional.
  • Bir ana bilgisayar ile: bir konak adresini geçirin.With a host: pass in a host address. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.A key or authorization token is optional.
  • Yetkilendirme belirteci ile: bir yetkilendirme belirtecini ve ilişkili bölgeyi geçirin.With an authorization token: pass in an authorization token and the associated region.

Not

Konuşma tanıma, konuşma birleştirme, çeviri veya amaç tanıma işlemlerini gerçekleştirmekten bağımsız olarak her zaman bir yapılandırma oluşturacaksınız.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Mikrofondan tanıRecognize from microphone

Cihaz mikrofonunuzu kullanarak konuşmayı tanımak için bir AudioConfig kullanarak oluşturun FromDefaultMicrophoneInput() .To recognize speech using your device microphone, create an AudioConfig using FromDefaultMicrophoneInput(). Ardından, ve ' yi geçirerek bir başlatın SpeechRecognizer audioConfig config .Then initialize a SpeechRecognizer, passing your audioConfig and config.

using namespace Microsoft::CognitiveServices::Speech::Audio;

auto audioConfig = AudioConfig::FromDefaultMicrophoneInput();
auto recognizer = SpeechRecognizer::FromConfig(config, audioConfig);

cout << "Speak into your microphone." << std::endl;
auto result = recognizer->RecognizeOnceAsync().get();
cout << "RECOGNIZED: Text=" << result->Text << std::endl;

Belirli bir ses giriş cihazını kullanmak istiyorsanız, IÇINDE cihaz kimliği belirtmeniz gerekir AudioConfig . Ses giriş cihazınız için CIHAZ kimliğini nasıl alabileceğinizi öğrenin.Learn how to get the device ID for your audio input device.

Dosyadan tanıRecognize from file

Konuşmayı kullanmak yerine bir ses dosyasından konuşmayı tanımak istiyorsanız, yine de oluşturmanız gerekir AudioConfig .If you want to recognize speech from an audio file instead of using a microphone, you still need to create an AudioConfig. Ancak, AudioConfig öğesini çağırmak yerine, FromDefaultMicrophoneInput() FromWavFileInput() dosya yolunu çağırır ve geçitirsiniz.However, when you create the AudioConfig, instead of calling FromDefaultMicrophoneInput(), you call FromWavFileInput() and pass the file path.

using namespace Microsoft::CognitiveServices::Speech::Audio;

auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
auto recognizer = SpeechRecognizer::FromConfig(config, audioInput);

auto result = recognizer->RecognizeOnceAsync().get();
cout << "RECOGNIZED: Text=" << result->Text << std::endl;

Konuşma tanımaRecognize speech

C++ için konuşma SDK 'Sı için tanıyıcı sınıfı , konuşma tanıma için kullanabileceğiniz birkaç yöntem sunar.The Recognizer class for the Speech SDK for C++ exposes a few methods that you can use for speech recognition.

Tek atışı tanımaSingle-shot recognition

Tek basamaklı tanıma, tek bir söylik zaman uyumsuz olarak tanır.Single-shot recognition asynchronously recognizes a single utterance. Tek bir utterüance 'in sonunda, sonda sessizlik dinlemesi veya en fazla 15 saniyelik ses işlenene kadar belirlenir.The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed. Şu kullanılarak zaman uyumsuz tek kararlı tanıma örneği aşağıda verilmiştir RecognizeOnceAsync :Here's an example of asynchronous single-shot recognition using RecognizeOnceAsync:

auto result = recognizer->RecognizeOnceAsync().get();

Sonucu işlemek için bazı kodlar yazmanız gerekir.You'll need to write some code to handle the result. Bu örnek şunları değerlendirir result->Reason :This sample evaluates the result->Reason:

  • Tanınma sonucunu yazdırır: ResultReason::RecognizedSpeechPrints the recognition result: ResultReason::RecognizedSpeech
  • Bir tanıma eşleşmesi yoksa, kullanıcıyı bilgilendirin: ResultReason::NoMatchIf there is no recognition match, inform the user: ResultReason::NoMatch
  • Bir hata ile karşılaşırsanız, hata iletisini yazdırın: ResultReason::CanceledIf an error is encountered, print the error message: ResultReason::Canceled
switch (result->Reason)
{
    case ResultReason::RecognizedSpeech:
        cout << "We recognized: " << result->Text << std::endl;
        break;
    case ResultReason::NoMatch:
        cout << "NOMATCH: Speech could not be recognized." << std::endl;
        break;
    case ResultReason::Canceled:
        {
            auto cancellation = CancellationDetails::FromResult(result);
            cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;
    
            if (cancellation->Reason == CancellationReason::Error) {
                cout << "CANCELED: ErrorCode= " << (int)cancellation->ErrorCode << std::endl;
                cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
                cout << "CANCELED: Did you update the subscription info?" << std::endl;
            }
        }
        break;
    default:
        break;
}

Sürekli tanımaContinuous recognition

Sürekli tanıma, tek kararlı tanıma göre biraz daha karmaşıktır.Continuous recognition is a bit more involved than single-shot recognition. Recognizing Recognized Tanıma sonuçlarını almak için,, ve olaylarına abone olmanızı gerektirir Canceled .It requires you to subscribe to the Recognizing, Recognized, and Canceled events to get the recognition results. Tanımayı durdurmak için StopContinuousRecognitionAsyncöğesini çağırmanız gerekir.To stop recognition, you must call StopContinuousRecognitionAsync. İşte, bir ses giriş dosyasında sürekli tanımanın nasıl gerçekleştirilebileceğini gösteren bir örnek.Here's an example of how continuous recognition is performed on an audio input file.

Girişi tanımlayarak ve şunu başlatarak başlayalım SpeechRecognizer :Let's start by defining the input and initializing a SpeechRecognizer:

auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
auto recognizer = SpeechRecognizer::FromConfig(config, audioInput);

Sonra, konuşma tanımanın durumunu yönetmek için bir değişken oluşturalım.Next, let's create a variable to manage the state of speech recognition. Başlamak için, promise<void> tanımanın başlangıcında bitmediğini güvenli bir şekilde varsaydığımız için bir bildirir.To start, we'll declare a promise<void>, since at the start of recognition we can safely assume that it's not finished.

promise<void> recognitionEnd;

Kaynağından gönderilen olaylara abone edeceğiz SpeechRecognizer .We'll subscribe to the events sent from the SpeechRecognizer.

  • Recognizing: Ara tanıma sonuçları içeren olaylar için sinyal.Recognizing: Signal for events containing intermediate recognition results.
  • Recognized: Son tanıma sonuçlarını içeren olaylar için sinyal (başarılı bir tanıma denemesi olduğunu gösterir).Recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • SessionStopped: Bir tanıma oturumunun (işlem) sonunu gösteren olaylar için sinyal.SessionStopped: Signal for events indicating the end of a recognition session (operation).
  • Canceled: İptal edilen tanıma sonuçlarını içeren olaylar için sinyal (sonuç veya doğrudan iptal isteği olarak iptal edilen bir tanıma girişimi veya ya da bir aktarım ya da protokol arızası).Canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
recognizer->Recognizing.Connect([](const SpeechRecognitionEventArgs& e)
    {
        cout << "Recognizing:" << e.Result->Text << std::endl;
    });

recognizer->Recognized.Connect([](const SpeechRecognitionEventArgs& e)
    {
        if (e.Result->Reason == ResultReason::RecognizedSpeech)
        {
            cout << "RECOGNIZED: Text=" << e.Result->Text 
                 << " (text could not be translated)" << std::endl;
        }
        else if (e.Result->Reason == ResultReason::NoMatch)
        {
            cout << "NOMATCH: Speech could not be recognized." << std::endl;
        }
    });

recognizer->Canceled.Connect([&recognitionEnd](const SpeechRecognitionCanceledEventArgs& e)
    {
        cout << "CANCELED: Reason=" << (int)e.Reason << std::endl;
        if (e.Reason == CancellationReason::Error)
        {
            cout << "CANCELED: ErrorCode=" << (int)e.ErrorCode << "\n"
                 << "CANCELED: ErrorDetails=" << e.ErrorDetails << "\n"
                 << "CANCELED: Did you update the subscription info?" << std::endl;

            recognitionEnd.set_value(); // Notify to stop recognition.
        }
    });

recognizer->SessionStopped.Connect([&recognitionEnd](const SessionEventArgs& e)
    {
        cout << "Session stopped.";
        recognitionEnd.set_value(); // Notify to stop recognition.
    });

Her şey ayarlandığında, çağırabiliriz StopContinuousRecognitionAsync .With everything set up, we can call StopContinuousRecognitionAsync.

// Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
recognizer->StartContinuousRecognitionAsync().get();

// Waits for recognition end.
recognitionEnd.get_future().get();

// Stops recognition.
recognizer->StopContinuousRecognitionAsync().get();

Dikte etme moduDictation mode

Sürekli tanıma kullanırken, ilgili "dikte etmeyi etkinleştir" işlevini kullanarak dikte işlemini etkinleştirebilirsiniz.When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. Bu mod, konuşma yapılandırma örneğinin noktalama gibi tümce yapılarının sözcük açıklamalarını yorumlamasını sağlar.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Örneğin, "kasadaki gerçek zamanlı olarak", "kasadaki canlı mısınız?" metni olarak yorumlanabilir.For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Dikte modunu etkinleştirmek için, içindeki EnableDictation yöntemi kullanın SpeechConfig .To enable dictation mode, use the EnableDictation method on your SpeechConfig.

config->EnableDictation();

Kaynak dilini değiştirChange source language

Konuşma tanıma için ortak bir görev, giriş (veya kaynak) dilini belirtmektir.A common task for speech recognition is specifying the input (or source) language. Giriş dilini Almanca olarak nasıl değiştirebileceğinizi göz atalım.Let's take a look at how you would change the input language to German. Kodunuzda, SpeechConfig daha sonra bu satırı hemen altına ekleyin.In your code, find your SpeechConfig, then add this line directly below it.

config->SetSpeechRecognitionLanguage("de-DE");

SetSpeechRecognitionLanguage bağımsız değişken olarak bir dize alan parametredir.SetSpeechRecognitionLanguage is a parameter that takes a string as an argument. Desteklenen yerel ayarlar/dillerlistesinde herhangi bir değer sağlayabilirsiniz.You can provide any value in the list of supported locales/languages.

Tanıma doğruluğunu geliştirmeImprove recognition accuracy

Konuşma SDK 'Sı ile tanıma doğruluğunu geliştirmenin birkaç yolu vardır.There are a few ways to improve recognition accuracy with the Speech SDK. Tümcecik listelerine göz atalım.Let's take a look at Phrase Lists. Tümcecik listeleri, bir kişinin adı veya belirli bir konum gibi, ses verilerinde bilinen tümcecikleri belirlemek için kullanılır.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Tek sözcükler veya bütün ifadeler, bir tümcecik listesine eklenebilir.Single words or complete phrases can be added to a Phrase List. Tanıma sırasında, tüm tümcecik için tam eşleşme sese dahil olursa tümcecik listesindeki bir giriş kullanılır.During recognition, an entry in a phrase list is used if an exact match for the entire phrase is included in the audio. Tümcecikle tam eşleşme bulunamazsa, tanıma yardımlı değildir.If an exact match to the phrase is not found, recognition is not assisted.

Önemli

Tümcecik listesi özelliği yalnızca Ingilizce olarak kullanılabilir.The Phrase List feature is only available in English.

Bir tümcecik listesi kullanmak için, önce bir PhraseListGrammar nesne oluşturun, ardından ile belirli sözcükler ve deyimler ekleyin AddPhrase .To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with AddPhrase.

Herhangi bir değişiklik PhraseListGrammar , bir sonraki tanıma göre veya konuşma hizmetine yeniden bağlanmaya sonra devreye girer.Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

auto phraseListGrammar = PhraseListGrammar::FromRecognizer(recognizer);
phraseListGrammar->AddPhrase("Supercalifragilisticexpialidocious");

Tümcecik listenizi temizlemeniz gerekirse:If you need to clear your phrase list:

phraseListGrammar->Clear();

Tanıma doğruluğunu artırmak için diğer seçeneklerOther options to improve recognition accuracy

Tümcecik listeleri, tanıma doğruluğunu artırmak için yalnızca bir seçenektir.Phrase lists are only one option to improve recognition accuracy. Aşağıdakileri de yapabilirsiniz:You can also:

Konuşma hizmetinin temel özelliklerinden biri de insan konuşmanızı tanıyabilme ve (genellikle konuşma-metin olarak adlandırılır).One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Bu hızlı başlangıçta, uygulama ve ürünlerinize yönelik konuşma SDK 'sını kullanarak yüksek kaliteli bir konuşmayı metne dönüştürme işlemini nasıl gerçekleştireceğinizi öğreneceksiniz.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

GitHub 'da örneklere atlayınSkip to samples on GitHub

Örnek koda doğrudan atlamak istiyorsanız, GitHub 'daki Go hızlı başlangıç örneklerine bakın.If you want to skip straight to sample code, see the Go quickstart samples on GitHub.

ÖnkoşullarPrerequisites

Bu makalede bir Azure hesabınız ve konuşma hizmeti aboneliğiniz olduğunu varsaymaktadır.This article assumes that you have an Azure account and Speech service subscription. Hesabınız ve aboneliğiniz yoksa konuşma hizmetini ücretsiz deneyin.If you don't have an account and subscription, try the Speech service for free.

Konuşma SDK 'sını yüklerInstall the Speech SDK

Herhangi bir şey yapabilmeniz için önce go Için konuşma SDK 'sınıyüklemeniz gerekir.Before you can do anything, you'll need to install the Speech SDK for Go.

Mikrofondan konuşmaya metinSpeech-to-text from microphone

Konuşma tanımayı varsayılan cihaz mikrofonunuzdan çalıştırmak için aşağıdaki kod örneğini kullanın.Use the following code sample to run speech recognition from your default device microphone. Değişkenleri subscription ve region abonelik ve bölge anahtarlarınız ile değiştirin.Replace the variables subscription and region with your subscription and region keys. Betiği çalıştırmak, varsayılan mikrofonunuzun ve çıkış metninde bir tanıma oturumu başlatır.Running the script will start a recognition session on your default microphone and output text.

import (
    "bufio"
    "fmt"
    "os"

    "github.com/Microsoft/cognitive-services-speech-sdk-go/audio"
    "github.com/Microsoft/cognitive-services-speech-sdk-go/speech"
)

func sessionStartedHandler(event speech.SessionEventArgs) {
    defer event.Close()
    fmt.Println("Session Started (ID=", event.SessionID, ")")
}

func sessionStoppedHandler(event speech.SessionEventArgs) {
    defer event.Close()
    fmt.Println("Session Stopped (ID=", event.SessionID, ")")
}

func recognizingHandler(event speech.SpeechRecognitionEventArgs) {
    defer event.Close()
    fmt.Println("Recognizing:", event.Result.Text)
}

func recognizedHandler(event speech.SpeechRecognitionEventArgs) {
    defer event.Close()
    fmt.Println("Recognized:", event.Result.Text)
}

func cancelledHandler(event speech.SpeechRecognitionCanceledEventArgs) {
    defer event.Close()
    fmt.Println("Received a cancellation: ", event.ErrorDetails)
}

func main() {
    subscription :=  "YOUR_SUBSCRIPTION_KEY"
    region := "YOUR_SUBSCRIPTIONKEY_REGION"

    audioConfig, err := audio.NewAudioConfigFromDefaultMicrophoneInput()
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer audioConfig.Close()
    config, err := speech.NewSpeechConfigFromSubscription(subscription, region)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer config.Close()
    speechRecognizer, err := speech.NewSpeechRecognizerFromConfig(config, audioConfig)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer speechRecognizer.Close()
    speechRecognizer.SessionStarted(sessionStartedHandler)
    speechRecognizer.SessionStopped(sessionStoppedHandler)
    speechRecognizer.Recognizing(recognizingHandler)
    speechRecognizer.Recognized(recognizedHandler)
    speechRecognizer.Canceled(cancelledHandler)
    speechRecognizer.StartContinuousRecognitionAsync()
    defer speechRecognizer.StopContinuousRecognitionAsync()
    bufio.NewReader(os.Stdin).ReadBytes('\n')
}

Ve sınıfları hakkında ayrıntılı bilgi için başvuru belgelerine bakın SpeechConfig SpeechRecognizer .See the reference docs for detailed information on the SpeechConfig and SpeechRecognizer classes.

Ses dosyasından konuşmayı metne dönüştürmeSpeech-to-text from audio file

Konuşma tanımayı bir ses dosyasından çalıştırmak için aşağıdaki örneği kullanın.Use the following sample to run speech recognition from an audio file. Değişkenleri subscription ve region abonelik ve bölge anahtarlarınız ile değiştirin.Replace the variables subscription and region with your subscription and region keys. Ayrıca, değişkenini bir file . wav dosyası yoluyla değiştirin.Additionally, replace the variable file with a path to a .wav file. Betiği çalıştırmak dosyadaki konuşmayı algılar ve metin sonucunu çıktı olarak görür.Running the script will recognize speech from the file, and output the text result.

import (
    "fmt"
    "time"

    "github.com/Microsoft/cognitive-services-speech-sdk-go/audio"
    "github.com/Microsoft/cognitive-services-speech-sdk-go/speech"
)

func main() {
    subscription :=  "YOUR_SUBSCRIPTION_KEY"
    region := "YOUR_SUBSCRIPTIONKEY_REGION"
    file := "path/to/file.wav"

    audioConfig, err := audio.NewAudioConfigFromWavFileInput(file)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer audioConfig.Close()
    config, err := speech.NewSpeechConfigFromSubscription(subscription, region)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer config.Close()
    speechRecognizer, err := speech.NewSpeechRecognizerFromConfig(config, audioConfig)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer speechRecognizer.Close()
    speechRecognizer.SessionStarted(func(event speech.SessionEventArgs) {
        defer event.Close()
        fmt.Println("Session Started (ID=", event.SessionID, ")")
    })
    speechRecognizer.SessionStopped(func(event speech.SessionEventArgs) {
        defer event.Close()
        fmt.Println("Session Stopped (ID=", event.SessionID, ")")
    })

    task := speechRecognizer.RecognizeOnceAsync()
    var outcome speech.SpeechRecognitionOutcome
    select {
    case outcome = <-task:
    case <-time.After(5 * time.Second):
        fmt.Println("Timed out")
        return
    }
    defer outcome.Close()
    if outcome.Error != nil {
        fmt.Println("Got an error: ", outcome.Error)
    }
    fmt.Println("Got a recognition!")
    fmt.Println(outcome.Result.Text)
}

Ve sınıfları hakkında ayrıntılı bilgi için başvuru belgelerine bakın SpeechConfig SpeechRecognizer .See the reference docs for detailed information on the SpeechConfig and SpeechRecognizer classes.

Konuşma hizmetinin temel özelliklerinden biri de insan konuşmanızı tanıyabilme ve (genellikle konuşma-metin olarak adlandırılır).One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Bu hızlı başlangıçta, uygulama ve ürünlerinize yönelik konuşma SDK 'sını kullanarak yüksek kaliteli bir konuşmayı metne dönüştürme işlemini nasıl gerçekleştireceğinizi öğreneceksiniz.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

GitHub 'da örneklere atlayınSkip to samples on GitHub

Örnek koda doğrudan atlamak istiyorsanız GitHub 'daki Java hızlı başlangıç örneklerine bakın.If you want to skip straight to sample code, see the Java quickstart samples on GitHub.

ÖnkoşullarPrerequisites

Bu makalede bir Azure hesabınız ve konuşma hizmeti aboneliğiniz olduğunu varsaymaktadır.This article assumes that you have an Azure account and Speech service subscription. Hesabınız ve aboneliğiniz yoksa konuşma hizmetini ücretsiz deneyin.If you don't have an account and subscription, try the Speech service for free.

Konuşma SDK 'sını yüklerInstall the Speech SDK

Herhangi bir şey yapabilmeniz için önce konuşma SDK 'sını yüklemeniz gerekir.Before you can do anything, you'll need to install the Speech SDK. Platformunuza bağlı olarak, aşağıdaki yönergeleri kullanın:Depending on your platform, use the following instructions:

Konuşma yapılandırması oluşturmaCreate a speech configuration

Konuşma SDK 'sını kullanarak konuşma hizmetini çağırmak için bir oluşturmanız gerekir SpeechConfig .To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Bu sınıf, uygulamanız hakkında, anahtarınız ve ilgili bölge, uç nokta, ana bilgisayar veya yetkilendirme belirteci gibi bilgileri içerir.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. SpeechConfigAnahtarınızı ve bölgenizi kullanarak oluşturun.Create a SpeechConfig by using your key and region. Bölge tanımlarınızı bulmak için bölge desteği sayfasına bakın.See the region support page to find your region identifier.

import java.util.concurrent.Future;
import com.microsoft.cognitiveservices.speech.*;

SpeechConfig config = SpeechConfig.fromSubscription("YourSubscriptionKey", "YourServiceRegion");

Şunları başlatabilmeniz için birkaç farklı yol vardır SpeechConfig :There are a few other ways that you can initialize a SpeechConfig:

  • Uç nokta ile: bir konuşma hizmeti uç noktasında geçirin.With an endpoint: pass in a Speech service endpoint. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.A key or authorization token is optional.
  • Bir ana bilgisayar ile: bir konak adresini geçirin.With a host: pass in a host address. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.A key or authorization token is optional.
  • Yetkilendirme belirteci ile: bir yetkilendirme belirtecini ve ilişkili bölgeyi geçirin.With an authorization token: pass in an authorization token and the associated region.

Not

Konuşma tanıma, konuşma birleştirme, çeviri veya amaç tanıma işlemlerini gerçekleştirmekten bağımsız olarak her zaman bir yapılandırma oluşturacaksınız.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Mikrofondan tanıRecognize from microphone

Cihaz mikrofonunuzu kullanarak konuşmayı tanımak için bir AudioConfig kullanarak oluşturun fromDefaultMicrophoneInput() .To recognize speech using your device microphone, create an AudioConfig using fromDefaultMicrophoneInput(). Ardından, ve ' yi geçirerek bir başlatın SpeechRecognizer audioConfig config .Then initialize aSpeechRecognizer, passing your audioConfig and config.

AudioConfig audioConfig = AudioConfig.fromDefaultMicrophoneInput();
SpeechRecognizer recognizer = new SpeechRecognizer(config, audioConfig);

System.out.println("Speak into your microphone.");
Future<SpeechRecognitionResult> task = recognizer.recognizeOnceAsync();
SpeechRecognitionResult result = task.get();
System.out.println("RECOGNIZED: Text=" + result.getText());

Belirli bir ses giriş cihazını kullanmak istiyorsanız, IÇINDE cihaz kimliği belirtmeniz gerekir AudioConfig . Ses giriş cihazınız için CIHAZ kimliğini nasıl alabileceğinizi öğrenin.Learn how to get the device ID for your audio input device.

Dosyadan tanıRecognize from file

Konuşmayı kullanmak yerine bir ses dosyasından konuşmayı tanımak istiyorsanız, yine de oluşturmanız gerekir AudioConfig .If you want to recognize speech from an audio file instead of using a microphone, you still need to create an AudioConfig. Ancak, AudioConfig öğesini, öğesini çağırmak yerine, fromDefaultMicrophoneInput() fromWavFileInput() dosya yolunu çağırın ve geçirin.However, when you create the AudioConfig, instead of calling fromDefaultMicrophoneInput(), call fromWavFileInput() and pass the file path.

AudioConfig audioConfig = AudioConfig.fromWavFileInput("YourAudioFile.wav");
SpeechRecognizer recognizer = new SpeechRecognizer(config, audioConfig);

Future<SpeechRecognitionResult> task = recognizer.recognizeOnceAsync();
SpeechRecognitionResult result = task.get();
System.out.println("RECOGNIZED: Text=" + result.getText());

Konuşma tanımaRecognize speech

Java için konuşma SDK 'Sı için tanıyıcı sınıfı , konuşma tanıma için kullanabileceğiniz birkaç yöntem sunar.The Recognizer class for the Speech SDK for Java exposes a few methods that you can use for speech recognition.

Tek atışı tanımaSingle-shot recognition

Tek basamaklı tanıma, tek bir söylik zaman uyumsuz olarak tanır.Single-shot recognition asynchronously recognizes a single utterance. Tek bir utterüance 'in sonunda, sonda sessizlik dinlemesi veya en fazla 15 saniyelik ses işlenene kadar belirlenir.The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed. Şu kullanılarak zaman uyumsuz tek kararlı tanıma örneği aşağıda verilmiştir recognizeOnceAsync :Here's an example of asynchronous single-shot recognition using recognizeOnceAsync:

Future<SpeechRecognitionResult> task = recognizer.recognizeOnceAsync();
SpeechRecognitionResult result = task.get();

Sonucu işlemek için bazı kodlar yazmanız gerekir.You'll need to write some code to handle the result. Bu örnek şunları değerlendirir result.getReason() :This sample evaluates the result.getReason():

  • Tanınma sonucunu yazdırır: ResultReason.RecognizedSpeechPrints the recognition result: ResultReason.RecognizedSpeech
  • Bir tanıma eşleşmesi yoksa, kullanıcıyı bilgilendirin: ResultReason.NoMatchIf there is no recognition match, inform the user: ResultReason.NoMatch
  • Bir hata ile karşılaşırsanız, hata iletisini yazdırın: ResultReason.CanceledIf an error is encountered, print the error message: ResultReason.Canceled
switch (result.getReason()) {
    case ResultReason.RecognizedSpeech:
        System.out.println("We recognized: " + result.getText());
        exitCode = 0;
        break;
    case ResultReason.NoMatch:
        System.out.println("NOMATCH: Speech could not be recognized.");
        break;
    case ResultReason.Canceled: {
            CancellationDetails cancellation = CancellationDetails.fromResult(result);
            System.out.println("CANCELED: Reason=" + cancellation.getReason());

            if (cancellation.getReason() == CancellationReason.Error) {
                System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode());
                System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails());
                System.out.println("CANCELED: Did you update the subscription info?");
            }
        }
        break;
}

Sürekli tanımaContinuous recognition

Sürekli tanıma, tek kararlı tanıma göre biraz daha karmaşıktır.Continuous recognition is a bit more involved than single-shot recognition. recognizing recognized Tanıma sonuçlarını almak için,, ve olaylarına abone olmanızı gerektirir canceled .It requires you to subscribe to the recognizing, recognized, and canceled events to get the recognition results. Tanımayı durdurmak için çağrısı yapmanız gerekir stopContinuousRecognitionAsync .To stop recognition, you must call stopContinuousRecognitionAsync. İşte, bir ses giriş dosyasında sürekli tanımanın nasıl gerçekleştirilebileceğini gösteren bir örnek.Here's an example of how continuous recognition is performed on an audio input file.

Girişi tanımlayarak ve şunu başlatarak başlayalım SpeechRecognizer :Let's start by defining the input and initializing a SpeechRecognizer:

AudioConfig audioConfig = AudioConfig.fromWavFileInput("YourAudioFile.wav");
SpeechRecognizer recognizer = new SpeechRecognizer(config, audioConfig);

Sonra, konuşma tanımanın durumunu yönetmek için bir değişken oluşturalım.Next, let's create a variable to manage the state of speech recognition. Başlamak için, sınıf kapsamında bir bildirir Semaphore .To start, we'll declare a Semaphore at the class scope.

private static Semaphore stopTranslationWithFileSemaphore;

Kaynağından gönderilen olaylara abone edeceğiz SpeechRecognizer .We'll subscribe to the events sent from the SpeechRecognizer.

  • recognizing: Ara tanıma sonuçları içeren olaylar için sinyal.recognizing: Signal for events containing intermediate recognition results.
  • recognized: Son tanıma sonuçlarını içeren olaylar için sinyal (başarılı bir tanıma denemesi olduğunu gösterir).recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • sessionStopped: Bir tanıma oturumunun (işlem) sonunu gösteren olaylar için sinyal.sessionStopped: Signal for events indicating the end of a recognition session (operation).
  • canceled: İptal edilen tanıma sonuçlarını içeren olaylar için sinyal (sonuç veya doğrudan iptal isteği olarak iptal edilen bir tanıma girişimi veya ya da bir aktarım ya da protokol arızası).canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
// First initialize the semaphore.
stopTranslationWithFileSemaphore = new Semaphore(0);

recognizer.recognizing.addEventListener((s, e) -> {
    System.out.println("RECOGNIZING: Text=" + e.getResult().getText());
});

recognizer.recognized.addEventListener((s, e) -> {
    if (e.getResult().getReason() == ResultReason.RecognizedSpeech) {
        System.out.println("RECOGNIZED: Text=" + e.getResult().getText());
    }
    else if (e.getResult().getReason() == ResultReason.NoMatch) {
        System.out.println("NOMATCH: Speech could not be recognized.");
    }
});

recognizer.canceled.addEventListener((s, e) -> {
    System.out.println("CANCELED: Reason=" + e.getReason());

    if (e.getReason() == CancellationReason.Error) {
        System.out.println("CANCELED: ErrorCode=" + e.getErrorCode());
        System.out.println("CANCELED: ErrorDetails=" + e.getErrorDetails());
        System.out.println("CANCELED: Did you update the subscription info?");
    }

    stopTranslationWithFileSemaphore.release();
});

recognizer.sessionStopped.addEventListener((s, e) -> {
    System.out.println("\n    Session stopped event.");
    stopTranslationWithFileSemaphore.release();
});

Her şey ayarlandığında, çağırabiliriz startContinuousRecognitionAsync .With everything set up, we can call startContinuousRecognitionAsync.

// Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
recognizer.startContinuousRecognitionAsync().get();

// Waits for completion.
stopTranslationWithFileSemaphore.acquire();

// Stops recognition.
recognizer.stopContinuousRecognitionAsync().get();

Dikte etme moduDictation mode

Sürekli tanıma kullanırken, ilgili "dikte etmeyi etkinleştir" işlevini kullanarak dikte işlemini etkinleştirebilirsiniz.When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. Bu mod, konuşma yapılandırma örneğinin noktalama gibi tümce yapılarının sözcük açıklamalarını yorumlamasını sağlar.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Örneğin, "kasadaki gerçek zamanlı olarak", "kasadaki canlı mısınız?" metni olarak yorumlanabilir.For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Dikte modunu etkinleştirmek için, içindeki enableDictation yöntemi kullanın SpeechConfig .To enable dictation mode, use the enableDictation method on your SpeechConfig.

config.enableDictation();

Kaynak dilini değiştirChange source language

Konuşma tanıma için ortak bir görev, giriş (veya kaynak) dilini belirtmektir.A common task for speech recognition is specifying the input (or source) language. Giriş dilini Fransızca 'ya nasıl değiştirebilirim bölümüne göz atalım.Let's take a look at how you would change the input language to French. Kodunuzda, SpeechConfig daha sonra bu satırı hemen altına ekleyin.In your code, find your SpeechConfig, then add this line directly below it.

config.setSpeechRecognitionLanguage("fr-FR");

setSpeechRecognitionLanguage bağımsız değişken olarak bir dize alan parametredir.setSpeechRecognitionLanguage is a parameter that takes a string as an argument. Desteklenen yerel ayarlar/dillerlistesinde herhangi bir değer sağlayabilirsiniz.You can provide any value in the list of supported locales/languages.

Tanıma doğruluğunu geliştirmeImprove recognition accuracy

Konuşma SDK 'Sı ile tanıma doğruluğunu geliştirmenin birkaç yolu vardır.There are a few ways to improve recognition accuracy with the Speech SDK. Tümcecik listelerine göz atalım.Let's take a look at Phrase Lists. Tümcecik listeleri, bir kişinin adı veya belirli bir konum gibi, ses verilerinde bilinen tümcecikleri belirlemek için kullanılır.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Tek sözcükler veya bütün ifadeler, bir tümcecik listesine eklenebilir.Single words or complete phrases can be added to a Phrase List. Tanıma sırasında, tüm tümcecik için tam eşleşme sese dahil olursa tümcecik listesindeki bir giriş kullanılır.During recognition, an entry in a phrase list is used if an exact match for the entire phrase is included in the audio. Tümcecikle tam eşleşme bulunamazsa, tanıma yardımlı değildir.If an exact match to the phrase is not found, recognition is not assisted.

Önemli

Tümcecik listesi özelliği yalnızca Ingilizce olarak kullanılabilir.The Phrase List feature is only available in English.

Bir tümcecik listesi kullanmak için, önce bir PhraseListGrammar nesne oluşturun, ardından ile belirli sözcükler ve deyimler ekleyin AddPhrase .To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with AddPhrase.

Herhangi bir değişiklik PhraseListGrammar , bir sonraki tanıma göre veya konuşma hizmetine yeniden bağlanmaya sonra devreye girer.Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

PhraseListGrammar phraseList = PhraseListGrammar.fromRecognizer(recognizer);
phraseList.addPhrase("Supercalifragilisticexpialidocious");

Tümcecik listenizi temizlemeniz gerekirse:If you need to clear your phrase list:

phraseList.clear();

Tanıma doğruluğunu artırmak için diğer seçeneklerOther options to improve recognition accuracy

Tümcecik listeleri, tanıma doğruluğunu artırmak için yalnızca bir seçenektir.Phrase lists are only one option to improve recognition accuracy. Aşağıdakileri de yapabilirsiniz:You can also:

Konuşma hizmetinin temel özelliklerinden biri de insan konuşmanızı tanıyabilme ve (genellikle konuşma-metin olarak adlandırılır).One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Bu hızlı başlangıçta, uygulama ve ürünlerinize yönelik konuşma SDK 'sını kullanarak yüksek kaliteli bir konuşmayı metne dönüştürme işlemini nasıl gerçekleştireceğinizi öğreneceksiniz.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

GitHub 'da örneklere atlayınSkip to samples on GitHub

Örnek koda doğrudan atlamak istiyorsanız GitHub 'da JavaScript hızlı başlangıç örneklerine bakın.If you want to skip straight to sample code, see the JavaScript quickstart samples on GitHub.

ÖnkoşullarPrerequisites

Bu makalede bir Azure hesabınız ve konuşma hizmeti aboneliğiniz olduğunu varsaymaktadır.This article assumes that you have an Azure account and Speech service subscription. Hesabınız ve aboneliğiniz yoksa konuşma hizmetini ücretsiz deneyin.If you don't have an account and subscription, try the Speech service for free.

Konuşma SDK 'sını yüklerInstall the Speech SDK

Herhangi bir şey yapabilmeniz için önce JavaScript için konuşma SDK 'sını yüklemeniz gerekir.Before you can do anything, you'll need to install the Speech SDK for JavaScript . Platformunuza bağlı olarak, aşağıdaki yönergeleri kullanın:Depending on your platform, use the following instructions:

Ayrıca, hedef ortama bağlı olarak, aşağıdakilerden birini kullanın:Additionally, depending on the target environment use one of the following:

JavaScript microsoft.cognitiveservices.speech.sdk.bundle.jsdosyası için konuşma SDK 'sını indirip ayıklayın ve HTML dosyanıza erişilebilen bir klasöre yerleştirin. microsoft.cognitiveservices.speech.sdk.bundle.jsDownload and extract the Speech SDK for JavaScript microsoft.cognitiveservices.speech.sdk.bundle.js file, and place it in a folder accessible to your HTML file.

<script src="microsoft.cognitiveservices.speech.sdk.bundle.js"></script>;

İpucu

Bir Web tarayıcısını hedefliyorsanız ve etiketini kullanıyorsanız, <script> sdk ön ek gerekli değildir.If you're targeting a web browser, and using the <script> tag; the sdk prefix is not needed. sdkÖn ek, modülü adlandırmak için kullanılan bir diğer addır require .The sdk prefix is an alias used to name the require module.

Konuşma yapılandırması oluşturmaCreate a speech configuration

Konuşma SDK 'sını kullanarak konuşma hizmetini çağırmak için bir oluşturmanız gerekir SpeechConfig .To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Bu sınıf, uygulamanız hakkında, anahtarınız ve ilgili bölge, uç nokta, ana bilgisayar veya yetkilendirme belirteci gibi bilgileri içerir.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. SpeechConfigAnahtarınızı ve bölgenizi kullanarak bir oluşturun.Create a SpeechConfig using your key and region. Bölge tanımlarınızı bulmak için bölge desteği sayfasına bakın.See the region support page to find your region identifier.

const speechConfig = SpeechConfig.fromSubscription("YourSubscriptionKey", "YourServiceRegion");

Şunları başlatabilmeniz için birkaç farklı yol vardır SpeechConfig :There are a few other ways that you can initialize a SpeechConfig:

  • Uç nokta ile: bir konuşma hizmeti uç noktasında geçirin.With an endpoint: pass in a Speech service endpoint. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.A key or authorization token is optional.
  • Bir ana bilgisayar ile: bir konak adresini geçirin.With a host: pass in a host address. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.A key or authorization token is optional.
  • Yetkilendirme belirteci ile: bir yetkilendirme belirtecini ve ilişkili bölgeyi geçirin.With an authorization token: pass in an authorization token and the associated region.

Not

Konuşma tanıma, konuşma birleştirme, çeviri veya amaç tanıma işlemlerini gerçekleştirmekten bağımsız olarak her zaman bir yapılandırma oluşturacaksınız.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Mikrofondan tanıRecognize from microphone

Cihaz mikrofonunuzu kullanarak konuşmayı tanımak için bir AudioConfig kullanarak oluşturun fromDefaultMicrophoneInput() .To recognize speech using your device microphone, create an AudioConfig using fromDefaultMicrophoneInput(). Ardından, ve ' yi geçirerek bir başlatın SpeechRecognizer speechConfig audioConfig .Then initialize a SpeechRecognizer, passing your speechConfig and audioConfig.

const audioConfig = AudioConfig.fromDefaultMicrophoneInput();
const recognizer = new SpeechRecognizer(speechConfig, audioConfig);

console.log('Speak into your microphone.');
recognizer.recognizeOnceAsync(result => {
    console.log(`RECOGNIZED: Text=${result.text}`);
});

Belirli bir ses giriş cihazını kullanmak istiyorsanız, IÇINDE cihaz kimliği belirtmeniz gerekir AudioConfig .If you want to use a specific audio input device, you need to specify the device ID in the AudioConfig. Ses giriş cihazınız için CIHAZ kimliğini nasıl alabileceğinizi öğrenin.Learn how to get the device ID for your audio input device.

Dosyadan tanı (yalnızca Node.js)Recognize from file (Node.js only)

Konuşmayı kullanmak yerine bir ses dosyasından konuşmayı tanımak istiyorsanız, yine de sağlamanız gerekir AudioConfig .If you want to recognize speech from an audio file instead of using a microphone, you still need to provide an AudioConfig. Ancak, AudioConfig öğesini çağırmak yerine, fromDefaultMicrophoneInput() fromWavFileInput() dosya yolunu çağırır ve geçitirsiniz.However, when you create the AudioConfig, instead of calling fromDefaultMicrophoneInput(), you call fromWavFileInput() and pass the file path.

const audioConfig = AudioConfig.fromWavFileInput("YourAudioFile.wav");
const recognizer = new SpeechRecognizer(speechConfig, audioConfig);

recognizer.recognizeOnceAsync(result => {
    console.log(`RECOGNIZED: Text=${result.text}`);
});

Konuşma tanımaRecognize speech

JavaScript için konuşma SDK 'Sı için tanıyıcı sınıfı , konuşma tanıma için kullanabileceğiniz birkaç yöntem sunar.The Recognizer class for the Speech SDK for JavaScript exposes a few methods that you can use for speech recognition.

Tek atışı tanımaSingle-shot recognition

Tek basamaklı tanıma, tek bir söylik zaman uyumsuz olarak tanır.Single-shot recognition asynchronously recognizes a single utterance. Tek bir utterüance 'in sonunda, sonda sessizlik dinlemesi veya en fazla 15 saniyelik ses işlenene kadar belirlenir.The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed. Şu kullanılarak zaman uyumsuz tek kararlı tanıma örneği aşağıda verilmiştir recognizeOnceAsync :Here's an example of asynchronous single-shot recognition using recognizeOnceAsync:

recognizer.recognizeOnceAsync(result => {
    // Interact with result
});

Sonucu işlemek için bazı kodlar yazmanız gerekir.You'll need to write some code to handle the result. Bu örnek şunları değerlendirir result.reason :This sample evaluates the result.reason:

  • Tanınma sonucunu yazdırır: ResultReason.RecognizedSpeechPrints the recognition result: ResultReason.RecognizedSpeech
  • Bir tanıma eşleşmesi yoksa, kullanıcıyı bilgilendirin: ResultReason.NoMatchIf there is no recognition match, inform the user: ResultReason.NoMatch
  • Bir hata ile karşılaşırsanız, hata iletisini yazdırın: ResultReason.CanceledIf an error is encountered, print the error message: ResultReason.Canceled
switch (result.reason) {
    case ResultReason.RecognizedSpeech:
        console.log(`RECOGNIZED: Text=${result.text}`);
        console.log("    Intent not recognized.");
        break;
    case ResultReason.NoMatch:
        console.log("NOMATCH: Speech could not be recognized.");
        break;
    case ResultReason.Canceled:
        const cancellation = CancellationDetails.fromResult(result);
        console.log(`CANCELED: Reason=${cancellation.reason}`);

        if (cancellation.reason == CancellationReason.Error) {
            console.log(`CANCELED: ErrorCode=${cancellation.ErrorCode}`);
            console.log(`CANCELED: ErrorDetails=${cancellation.errorDetails}`);
            console.log("CANCELED: Did you update the subscription info?");
        }
        break;
    }

Sürekli tanımaContinuous recognition

Sürekli tanıma, tek kararlı tanıma göre biraz daha karmaşıktır.Continuous recognition is a bit more involved than single-shot recognition. Recognizing Recognized Tanıma sonuçlarını almak için,, ve olaylarına abone olmanızı gerektirir Canceled .It requires you to subscribe to the Recognizing, Recognized, and Canceled events to get the recognition results. Tanımayı durdurmak için çağrısı yapmanız gerekir stopContinuousRecognitionAsync .To stop recognition, you must call stopContinuousRecognitionAsync. İşte, bir ses giriş dosyasında sürekli tanımanın nasıl gerçekleştirilebileceğini gösteren bir örnek.Here's an example of how continuous recognition is performed on an audio input file.

Girişi tanımlayarak ve şunu başlatarak başlayalım SpeechRecognizer :Let's start by defining the input and initializing a SpeechRecognizer:

const recognizer = new SpeechRecognizer(speechConfig);

Kaynağından gönderilen olaylara abone edeceğiz SpeechRecognizer .We'll subscribe to the events sent from the SpeechRecognizer.

  • recognizing: Ara tanıma sonuçları içeren olaylar için sinyal.recognizing: Signal for events containing intermediate recognition results.
  • recognized: Son tanıma sonuçlarını içeren olaylar için sinyal (başarılı bir tanıma denemesi olduğunu gösterir).recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • sessionStopped: Bir tanıma oturumunun (işlem) sonunu gösteren olaylar için sinyal.sessionStopped: Signal for events indicating the end of a recognition session (operation).
  • canceled: İptal edilen tanıma sonuçlarını içeren olaylar için sinyal (sonuç veya doğrudan iptal isteği olarak iptal edilen bir tanıma girişimi veya ya da bir aktarım ya da protokol arızası).canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
recognizer.recognizing = (s, e) => {
    console.log(`RECOGNIZING: Text=${e.result.text}`);
};

recognizer.recognized = (s, e) => {
    if (e.result.reason == ResultReason.RecognizedSpeech) {
        console.log(`RECOGNIZED: Text=${e.result.text}`);
    }
    else if (e.result.reason == ResultReason.NoMatch) {
        console.log("NOMATCH: Speech could not be recognized.");
    }
};

recognizer.canceled = (s, e) => {
    console.log(`CANCELED: Reason=${e.reason}`);

    if (e.reason == CancellationReason.Error) {
        console.log(`"CANCELED: ErrorCode=${e.errorCode}`);
        console.log(`"CANCELED: ErrorDetails=${e.errorDetails}`);
        console.log("CANCELED: Did you update the subscription info?");
    }

    recognizer.stopContinuousRecognitionAsync();
};

recognizer.sessionStopped = (s, e) => {
    console.log("\n    Session stopped event.");
    recognizer.stopContinuousRecognitionAsync();
};

Her şey ayarlandığında, çağırabiliriz startContinuousRecognitionAsync .With everything set up, we can call startContinuousRecognitionAsync.

// Starts continuous recognition. Uses stopContinuousRecognitionAsync() to stop recognition.
recognizer.startContinuousRecognitionAsync();

// Something later can call, stops recognition.
// recognizer.StopContinuousRecognitionAsync();

Dikte etme moduDictation mode

Sürekli tanıma kullanırken, ilgili "dikte etmeyi etkinleştir" işlevini kullanarak dikte işlemini etkinleştirebilirsiniz.When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. Bu mod, konuşma yapılandırma örneğinin noktalama gibi tümce yapılarının sözcük açıklamalarını yorumlamasını sağlar.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Örneğin, "kasadaki gerçek zamanlı olarak", "kasadaki canlı mısınız?" metni olarak yorumlanabilir.For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Dikte modunu etkinleştirmek için, içindeki enableDictation yöntemi kullanın SpeechConfig .To enable dictation mode, use the enableDictation method on your SpeechConfig.

speechConfig.enableDictation();

Kaynak dilini değiştirChange source language

Konuşma tanıma için ortak bir görev, giriş (veya kaynak) dilini belirtmektir.A common task for speech recognition is specifying the input (or source) language. Giriş dilini Italyanca olarak nasıl değiştirebileceğinizi göz atalım.Let's take a look at how you would change the input language to Italian. Kodunuzda, SpeechConfig daha sonra bu satırı hemen altına ekleyin.In your code, find your SpeechConfig, then add this line directly below it.

speechConfig.speechRecognitionLanguage = "it-IT";

speechRecognitionLanguageÖzelliği, bir dil yerel ayar dizesi bekliyor.The speechRecognitionLanguage property expects a language-locale format string. Desteklenen yerel ayarlar/dillerlistesindeki yerel ayar sütununda herhangi bir değer sağlayabilirsiniz.You can provide any value in the Locale column in the list of supported locales/languages.

Tanıma doğruluğunu geliştirmeImprove recognition accuracy

Konuşma tanıma özelliğinin sözcük listelerine göz atabilmesine yönelik birkaç yol vardır.There are a few ways to improve recognition accuracy with the Speech Let's take a look at Phrase Lists. Tümcecik listeleri, bir kişinin adı veya belirli bir konum gibi, ses verilerinde bilinen tümcecikleri belirlemek için kullanılır.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Tek sözcükler veya bütün ifadeler, bir tümcecik listesine eklenebilir.Single words or complete phrases can be added to a Phrase List. Tanıma sırasında, tüm tümcecik için tam eşleşme sese dahil olursa tümcecik listesindeki bir giriş kullanılır.During recognition, an entry in a phrase list is used if an exact match for the entire phrase is included in the audio. Tümcecikle tam eşleşme bulunamazsa, tanıma yardımlı değildir.If an exact match to the phrase is not found, recognition is not assisted.

Önemli

Tümcecik listesi özelliği yalnızca Ingilizce olarak kullanılabilir.The Phrase List feature is only available in English.

Bir tümcecik listesi kullanmak için, önce bir PhraseListGrammar nesne oluşturun, ardından ile belirli sözcükler ve deyimler ekleyin addPhrase .To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with addPhrase.

Herhangi bir değişiklik PhraseListGrammar , bir sonraki tanıma göre veya konuşma hizmetine yeniden bağlanmaya sonra devreye girer.Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

const phraseList = PhraseListGrammar.fromRecognizer(recognizer);
phraseList.addPhrase("Supercalifragilisticexpialidocious");

Tümcecik listenizi temizlemeniz gerekirse:If you need to clear your phrase list:

phraseList.clear();

Tanıma doğruluğunu artırmak için diğer seçeneklerOther options to improve recognition accuracy

Tümcecik listeleri, tanıma doğruluğunu artırmak için yalnızca bir seçenektir.Phrase lists are only one option to improve recognition accuracy. Aşağıdakileri de yapabilirsiniz:You can also:

Swift ve amaç-C için konuşma SDK 'sını kullanarak konuşmayı metne aktarabilirsiniz.You can transcribe speech into text using the Speech SDK for Swift and Objective-C.

Ön koşullarPrerequisites

Aşağıdaki örneklerde bir Azure hesabınız ve konuşma hizmeti aboneliğiniz olduğunu varsayalım.The following samples assume that you have an Azure account and Speech service subscription. Hesabınız ve aboneliğiniz yoksa konuşma hizmetini ücretsiz deneyin.If you don't have an account and subscription, try the Speech service for free.

Konuşma SDK 'Sı ve örnekleri 'ni yüklerInstall Speech SDK and samples

Bilişsel Hizmetler konuşma SDK 'sı , IOS ve Mac için Swift ve amaç-C ' d e yazılmış örnekleri içerir.The Cognitive Services Speech SDK contains samples written in in Swift and Objective-C for iOS and Mac. Her örnek için yükleme yönergelerini görmek üzere bir bağlantıya tıklayın:Click a link to see installation instructions for each sample:

Ayrıca, Amaç-C başvurusu için çevrimiçi bir konuşma SDK 'sısunuyoruz.We also provide an online Speech SDK for Objective-C Reference.

Konuşma hizmetinin temel özelliklerinden biri de insan konuşmanızı tanıyabilme ve (genellikle konuşma-metin olarak adlandırılır).One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Bu hızlı başlangıçta, uygulama ve ürünlerinize yönelik konuşma SDK 'sını kullanarak yüksek kaliteli bir konuşmayı metne dönüştürme işlemini nasıl gerçekleştireceğinizi öğreneceksiniz.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

GitHub 'da örneklere atlayınSkip to samples on GitHub

Örnek koda doğrudan atlamak istiyorsanız GitHub 'daki Python hızlı başlangıç örneklerine bakın.If you want to skip straight to sample code, see the Python quickstart samples on GitHub.

ÖnkoşullarPrerequisites

Bu makalede şu varsayılmaktadır:This article assumes:

Konuşma SDK 'sını yükleyip içeri aktarmaInstall and import the Speech SDK

Herhangi bir şey yapabilmeniz için önce konuşma SDK 'sını yüklemeniz gerekir.Before you can do anything, you'll need to install the Speech SDK.

pip install azure-cognitiveservices-speech

MacOS 'ta çalışıyorsanız ve yüklemeyi sorunları yaşıyorsanız, önce bu komutu çalıştırmanız gerekebilir.If you're on macOS and run into install issues, you may need to run this command first.

python3 -m pip install --upgrade pip

Konuşma SDK 'Sı yüklendikten sonra Python projenize aktarın.After the Speech SDK is installed, import it into your Python project.

import azure.cognitiveservices.speech as speechsdk

Konuşma yapılandırması oluşturmaCreate a speech configuration

Konuşma SDK 'sını kullanarak konuşma hizmetini çağırmak için bir oluşturmanız gerekir SpeechConfig .To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Bu sınıf, uygulamanız hakkında, anahtarınız ve ilgili bölge, uç nokta, ana bilgisayar veya yetkilendirme belirteci gibi bilgileri içerir.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. SpeechConfigAnahtarınızı ve bölgenizi kullanarak bir oluşturun.Create a SpeechConfig using your key and region. Bölge tanımlarınızı bulmak için bölge desteği sayfasına bakın.See the region support page to find your region identifier.

speech_key, service_region = "YourSubscriptionKey", "YourServiceRegion"
speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region)

Şunları başlatabilmeniz için birkaç farklı yol vardır SpeechConfig :There are a few other ways that you can initialize a SpeechConfig:

  • Uç nokta ile: bir konuşma hizmeti uç noktasında geçirin.With an endpoint: pass in a Speech service endpoint. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.A key or authorization token is optional.
  • Bir ana bilgisayar ile: bir konak adresini geçirin.With a host: pass in a host address. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.A key or authorization token is optional.
  • Yetkilendirme belirteci ile: bir yetkilendirme belirtecini ve ilişkili bölgeyi geçirin.With an authorization token: pass in an authorization token and the associated region.

Not

Konuşma tanıma, konuşma birleştirme, çeviri veya amaç tanıma işlemlerini gerçekleştirmekten bağımsız olarak her zaman bir yapılandırma oluşturacaksınız.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Mikrofondan tanıRecognize from microphone

Cihaz mikrofonunuzu kullanarak konuşmayı tanımak için SpeechRecognizer AudioConfig , bir ve iletmeksizin bir oluşturun speech_config .To recognize speech using your device microphone, simply create a SpeechRecognizer without passing an AudioConfig, and pass your speech_config.

speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config)

print("Speak into your microphone.")
result = speech_recognizer.recognize_once_async().get()
print(result.text)

Belirli bir ses giriş cihazını kullanmak istiyorsanız, cihaz kimliğini bir içinde belirtmeniz AudioConfig ve oluşturucunun param öğesine geçirmeniz gerekir SpeechRecognizer audio_config .If you want to use a specific audio input device, you need to specify the device ID in an AudioConfig, and pass it to the SpeechRecognizer constructor's audio_config param. Ses giriş cihazınız için CIHAZ kimliğini nasıl alabileceğinizi öğrenin.Learn how to get the device ID for your audio input device.

Dosyadan tanıRecognize from file

Mikrofon kullanmak yerine bir ses dosyasından konuşmayı tanımak istiyorsanız, oluşturun AudioConfig ve filename parametresini kullanın.If you want to recognize speech from an audio file instead of using a microphone, create an AudioConfig and use the filename parameter.

audio_input = speechsdk.AudioConfig(filename="your_file_name.wav")
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_input)

result = speech_recognizer.recognize_once_async().get()
print(result.text)

Konuşma tanımaRecognize speech

Python için konuşma SDK 'Sı için tanıyıcı sınıfı , konuşma tanıma için kullanabileceğiniz birkaç yöntem sunar.The Recognizer class for the Speech SDK for Python exposes a few methods that you can use for speech recognition.

Tek atışı tanımaSingle-shot recognition

Tek basamaklı tanıma, tek bir söylik zaman uyumsuz olarak tanır.Single-shot recognition asynchronously recognizes a single utterance. Tek bir utterüance 'in sonunda, sonda sessizlik dinlemesi veya en fazla 15 saniyelik ses işlenene kadar belirlenir.The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed. Şu kullanılarak zaman uyumsuz tek kararlı tanıma örneği aşağıda verilmiştir recognize_once_async() :Here's an example of asynchronous single-shot recognition using recognize_once_async():

result = speech_recognizer.recognize_once_async().get()

Sonuç boyunca yinelemek için bazı kodlar yazmanız gerekir.You'll need to write some code to iterate through the result. Bu örnek şunları değerlendirir result.reason :This sample evaluates the result.reason:

  • Tanınma sonucunu yazdırır: speechsdk.ResultReason.RecognizedSpeechPrints the recognition result: speechsdk.ResultReason.RecognizedSpeech
  • Bir tanıma eşleşmesi yoksa, kullanıcıyı bilgilendirin: speechsdk.ResultReason.NoMatch If there is no recognition match, inform the user: speechsdk.ResultReason.NoMatch
  • Bir hata ile karşılaşırsanız, hata iletisini yazdırın: speechsdk.ResultReason.CanceledIf an error is encountered, print the error message: speechsdk.ResultReason.Canceled
if result.reason == speechsdk.ResultReason.RecognizedSpeech:
    print("Recognized: {}".format(result.text))
elif result.reason == speechsdk.ResultReason.NoMatch:
    print("No speech could be recognized: {}".format(result.no_match_details))
elif result.reason == speechsdk.ResultReason.Canceled:
    cancellation_details = result.cancellation_details
    print("Speech Recognition canceled: {}".format(cancellation_details.reason))
    if cancellation_details.reason == speechsdk.CancellationReason.Error:
        print("Error details: {}".format(cancellation_details.error_details))

Sürekli tanımaContinuous recognition

Sürekli tanıma, tek kararlı tanıma göre biraz daha karmaşıktır.Continuous recognition is a bit more involved than single-shot recognition. EventSignalTanıma sonuçlarını almak için ' a bağlanmanızı gerektirir ve ' de, tanımayı durdurmak için stop_continuous_recognition () veya stop_continuous_recognition ()çağırmanız gerekir.It requires you to connect to the EventSignal to get the recognition results, and in to stop recognition, you must call stop_continuous_recognition() or stop_continuous_recognition(). İşte, bir ses giriş dosyasında sürekli tanımanın nasıl gerçekleştirilebileceğini gösteren bir örnek.Here's an example of how continuous recognition is performed on an audio input file.

Girişi tanımlayarak ve şunu başlatarak başlayalım SpeechRecognizer :Let's start by defining the input and initializing a SpeechRecognizer:

audio_config = speechsdk.audio.AudioConfig(filename=weatherfilename)
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)

Sonra, konuşma tanımanın durumunu yönetmek için bir değişken oluşturalım.Next, let's create a variable to manage the state of speech recognition. Başlamak için bunu olarak ayarlayacağız, çünkü False tanımanın başlangıcında bitmediğini güvenli bir şekilde varsayacağız.To start, we'll set this to False, since at the start of recognition we can safely assume that it's not finished.

done = False

Şimdi, alındığında sürekli tanımayı durdurmak için bir geri çağırma oluşturacağız evt .Now, we're going to create a callback to stop continuous recognition when an evt is received. Göz önünde bulundurmanız gereken birkaç nokta vardır.There's a few things to keep in mind.

  • Bir evt alındığında evt ileti yazdırılır.When an evt is received, the evt message is printed.
  • Bir bir alındıktan sonra evt , tanımayı durdurmak için stop_continuous_recognition () çağırılır.After an evt is received, stop_continuous_recognition() is called to stop recognition.
  • Tanınma durumu olarak değiştirilir True .The recognition state is changed to True.
def stop_cb(evt):
    print('CLOSING on {}'.format(evt))
    speech_recognizer.stop_continuous_recognition()
    nonlocal done
    done = True

Bu kod örneği, ' den gönderilen olaylara geri çağırmaları bağlamayı gösterir SpeechRecognizer .This code sample shows how to connect callbacks to events sent from the SpeechRecognizer.

  • recognizing: Ara tanıma sonuçları içeren olaylar için sinyal.recognizing: Signal for events containing intermediate recognition results.
  • recognized: Son tanıma sonuçlarını içeren olaylar için sinyal (başarılı bir tanıma denemesi olduğunu gösterir).recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • session_started: Bir tanıma oturumunun başlangıcını (işlem) gösteren olaylar için sinyal.session_started: Signal for events indicating the start of a recognition session (operation).
  • session_stopped: Bir tanıma oturumunun (işlem) sonunu gösteren olaylar için sinyal.session_stopped: Signal for events indicating the end of a recognition session (operation).
  • canceled: İptal edilen tanıma sonuçlarını içeren olaylar için sinyal (sonuç veya doğrudan iptal isteği olarak iptal edilen bir tanıma girişimi veya ya da bir aktarım ya da protokol arızası).canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
speech_recognizer.recognizing.connect(lambda evt: print('RECOGNIZING: {}'.format(evt)))
speech_recognizer.recognized.connect(lambda evt: print('RECOGNIZED: {}'.format(evt)))
speech_recognizer.session_started.connect(lambda evt: print('SESSION STARTED: {}'.format(evt)))
speech_recognizer.session_stopped.connect(lambda evt: print('SESSION STOPPED {}'.format(evt)))
speech_recognizer.canceled.connect(lambda evt: print('CANCELED {}'.format(evt)))

speech_recognizer.session_stopped.connect(stop_cb)
speech_recognizer.canceled.connect(stop_cb)

Her şey ayarlandığında start_continuous_recognition ()çağırabiliriz.With everything set up, we can call start_continuous_recognition().

speech_recognizer.start_continuous_recognition()
while not done:
    time.sleep(.5)

Dikte etme moduDictation mode

Sürekli tanıma kullanırken, ilgili "dikte etmeyi etkinleştir" işlevini kullanarak dikte işlemini etkinleştirebilirsiniz.When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. Bu mod, konuşma yapılandırma örneğinin noktalama gibi tümce yapılarının sözcük açıklamalarını yorumlamasını sağlar.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Örneğin, "kasadaki gerçek zamanlı olarak", "kasadaki canlı mısınız?" metni olarak yorumlanabilir.For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Dikte modunu etkinleştirmek için, içindeki enable_dictation() yöntemi kullanın SpeechConfig .To enable dictation mode, use the enable_dictation() method on your SpeechConfig.

SpeechConfig.enable_dictation()

Kaynak dilini değiştirChange source language

Konuşma tanıma için ortak bir görev, giriş (veya kaynak) dilini belirtmektir.A common task for speech recognition is specifying the input (or source) language. Giriş dilini Almanca olarak nasıl değiştirebileceğinizi göz atalım.Let's take a look at how you would change the input language to German. Kodunuzda SpeechConfig bulun ve ardından bu satırı hemen altına ekleyin.In your code, find your SpeechConfig, then add this line directly below it.

speech_config.speech_recognition_language="de-DE"

speech_recognition_language bağımsız değişken olarak bir dize alan parametredir.speech_recognition_language is a parameter that takes a string as an argument. Desteklenen yerel ayarlar/dillerlistesinde herhangi bir değer sağlayabilirsiniz.You can provide any value in the list of supported locales/languages.

Tanıma doğruluğunu geliştirmeImprove recognition accuracy

Konuşma SDK 'Sı ile tanıma doğruluğunu geliştirmenin birkaç yolu vardır.There are a few ways to improve recognition accuracy with the Speech SDK. Tümcecik listelerine göz atalım.Let's take a look at Phrase Lists. Tümcecik listeleri, bir kişinin adı veya belirli bir konum gibi, ses verilerinde bilinen tümcecikleri belirlemek için kullanılır.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Tek sözcükler veya bütün ifadeler, bir tümcecik listesine eklenebilir.Single words or complete phrases can be added to a Phrase List. Tanıma sırasında, tüm tümcecik için tam eşleşme sese dahil olursa tümcecik listesindeki bir giriş kullanılır.During recognition, an entry in a phrase list is used if an exact match for the entire phrase is included in the audio. Tümcecikle tam eşleşme bulunamazsa, tanıma yardımlı değildir.If an exact match to the phrase is not found, recognition is not assisted.

Önemli

Tümcecik listesi özelliği yalnızca Ingilizce olarak kullanılabilir.The Phrase List feature is only available in English.

Bir tümcecik listesi kullanmak için, önce bir PhraseListGrammar nesne oluşturun, ardından ile belirli sözcükler ve deyimler ekleyin addPhrase .To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with addPhrase.

Herhangi bir değişiklik PhraseListGrammar , bir sonraki tanıma göre veya konuşma hizmetine yeniden bağlanmaya sonra devreye girer.Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

phrase_list_grammar = speechsdk.PhraseListGrammar.from_recognizer(reco)
phrase_list_grammar.addPhrase("Supercalifragilisticexpialidocious")

Tümcecik listenizi temizlemeniz gerekirse:If you need to clear your phrase list:

phrase_list_grammar.clear()

Tanıma doğruluğunu artırmak için diğer seçeneklerOther options to improve recognition accuracy

Tümcecik listeleri, tanıma doğruluğunu artırmak için yalnızca bir seçenektir.Phrase lists are only one option to improve recognition accuracy. Aşağıdakileri de yapabilirsiniz:You can also:

Bu hızlı başlangıçta, konuşma hizmeti ve kıvrımlı kullanarak konuşmayı metne dönüştürmeyi öğreneceksiniz.In this quickstart, you learn how to convert speech to text using the Speech service and cURL.

Konuşmadan metne yönelik kavramlar hakkında üst düzey bir bakış için bkz. genel bakış makalesi.For a high-level look at Speech-to-Text concepts, see the overview article.

Ön koşullarPrerequisites

Bu makalede bir Azure hesabınız ve konuşma hizmeti aboneliğiniz olduğunu varsaymaktadır.This article assumes that you have an Azure account and Speech service subscription. Hesabınız ve aboneliğiniz yoksa konuşma hizmetini ücretsiz deneyin.If you don't have an account and subscription, try the Speech service for free.

Konuşmayı metne dönüştürmeConvert speech to text

Komut isteminde aşağıdaki komutu çalıştırın.At a command prompt, run the following command. Komutuna aşağıdaki değerleri eklemeniz gerekir.You will need to insert the following values into the command.

  • Konuşma hizmeti abonelik anahtarınız.Your Speech service subscription key.
  • Konuşma hizmeti bölgeniz.Your Speech service region.
  • Giriş ses dosyası yolu.The input audio file path. Metin okuma özelliğinikullanarak ses dosyaları oluşturabilirsiniz.You can generate audio files using text-to-speech.
curl --location --request POST 'https://INSERT_REGION_HERE.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US' \
--header 'Ocp-Apim-Subscription-Key: INSERT_SUBSCRIPTION_KEY_HERE' \
--header 'Content-Type: audio/wav' \
--data-binary 'INSERT_AUDIO_FILE_PATH_HERE'

Aşağıdakine benzer bir yanıt almanız gerekir.You should receive a response like the following one.

{
    "RecognitionStatus": "Success",
    "DisplayText": "My voice is my passport, verify me.",
    "Offset": 6600000,
    "Duration": 32100000
}

Daha fazla bilgi için konuşmayı metne dönüştürme REST API başvurusunabakın.For more information see the speech-to-text REST API reference.

Konuşma hizmetinin temel özelliklerinden biri de insan konuşmanızı tanıyabilme ve (genellikle konuşma-metin olarak adlandırılır).One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Bu hızlı başlangıçta, yüksek kaliteli konuşmadan metne dönüştürme gerçekleştirmek için uygulama ve ürünlerinize yönelik konuşma CLı 'sını nasıl kullanacağınızı öğreneceksiniz.In this quickstart, you learn how to use the Speech CLI in your apps and products to perform high-quality speech-to-text conversion.

İndirme ve yüklemeDownload and install

Not

Windows 'ta, platformunuz için Visual Studio 2019 Için yeniden dağıtılabilir Microsoft Visual C++ gerekir.On Windows, you need the Microsoft Visual C++ Redistributable for Visual Studio 2019 for your platform. Bunu ilk kez yüklemek için Windows 'u yeniden başlatmanız gerekebilir.Installing this for the first time may require you to restart Windows.

Windows 'a konuşma CLı 'Yı yüklemek için aşağıdaki adımları izleyin:Follow these steps to install the Speech CLI on Windows:

  1. Konuşma CLı ZIP arşiviniindirip ayıklayın.Download the Speech CLI zip archive, then extract it.
  2. spx-zipsİndirmenin ayıklanacağı kök dizine gidin ve ihtiyacınız olan alt dizini ayıklayın ( spx-net471 .NET Framework 4,7 için veya spx-netcore-win-x64 x64 CPU üzerinde .NET Core 3,0 için).Go to the root directory spx-zips that you extracted from the download, and extract the subdirectory that you need (spx-net471 for .NET Framework 4.7, or spx-netcore-win-x64 for .NET Core 3.0 on an x64 CPU).

Komut isteminde dizini bu konum olarak değiştirin ve ardından yazarak spx konuşma CLI için yardımı görüntüleyin.In the command prompt, change directory to this location, and then type spx to see help for the Speech CLI.

Not

Windows 'da, konuşma CLı yalnızca yerel bilgisayardaki komut isteminde kullanılabilen yazı tiplerini gösterebilir.On Windows, the Speech CLI can only show fonts available to the command prompt on the local computer. Windows Terminal , konuşma CLI tarafından etkileşimli olarak üretilen tüm yazı tiplerini destekler.Windows Terminal supports all fonts produced interactively by the Speech CLI. Bir dosyaya çıkış yaparsanız, Not defteri veya Microsoft Edge gibi bir Web tarayıcısı gibi bir metin Düzenleyicisi de tüm yazı tiplerini gösterebilir.If you output to a file, a text editor like Notepad or a web browser like Microsoft Edge can also show all fonts.

Not

PowerShell, bir komut ararken yerel dizini denetlemez.Powershell does not check the local directory when looking for a command. PowerShell 'de Dizin ' i konum olarak değiştirin spx ve girerek aracı çağırın .\spx .In Powershell, change directory to the location of spx and call the tool by entering .\spx. Bu dizini yolunuza eklerseniz, PowerShell ve Windows komut istemi, spx ön eki dahil etmeden herhangi bir dizinden bulacaktır .\ .If you add this directory to your path, Powershell and the Windows command prompt will find spx from any directory without including the .\ prefix.

Abonelik yapılandırması oluşturCreate subscription config

Konuşma CLı 'yı kullanmaya başlamak için konuşma abonelik anahtarınızı ve bölge tanımlayıcıyı girmeniz gerekir.To start using the Speech CLI, you need to enter your Speech subscription key and region identifier. Konuşma hizmetini ücretsiz deneyinbölümündeki adımları izleyerek bu kimlik bilgilerini alın.Get these credentials by following steps in Try the Speech service for free. Abonelik anahtarınızı ve bölge tanımlayıcıyı (örn.Once you have your subscription key and region identifier (ex. eastus, westus ), aşağıdaki komutları çalıştırın.eastus, westus), run the following commands.

spx config @key --set SUBSCRIPTION-KEY
spx config @region --set REGION

Abonelik kimlik doğrulaması artık gelecekteki SPX istekleri için depolandı.Your subscription authentication is now stored for future SPX requests. Bu depolanmış değerlerden birini kaldırmanız gerekirse, veya ' i çalıştırın spx config @region --clear spx config @key --clear .If you need to remove either of these stored values, run spx config @region --clear or spx config @key --clear.

Mikrofondan konuşmaya metinSpeech-to-text from microphone

BILGISAYAR mikrofonunuzu takın ve açın ve mikrofonu da kullanabilir olabilecek tüm uygulamaları kapatın.Plug in and turn on your PC microphone, and turn off any apps that might also use the microphone. Bazı bilgisayarlarda yerleşik bir mikrofon vardır, diğerleri ise Bluetooth cihazının yapılandırılması gerekir.Some computers have a built-in microphone, while others require configuration of a Bluetooth device.

Artık mikrofona konuşmayı tanımak için konuşma CLı 'sını çalıştırmaya hazırsınız demektir.Now you're ready to run the Speech CLI to recognize speech from your microphone. Komut satırından, konuşma CLı ikili dosyasını içeren dizine geçin ve aşağıdaki komutu çalıştırın.From the command line, change to the directory that contains the Speech CLI binary file, and run the following command.

spx recognize --microphone

Not

Konuşma CLı varsayılan olarak Ingilizce 'Dir.The Speech CLI defaults to English. Konuşma-metin tablosundanfarklı bir dil seçebilirsiniz.You can choose a different language from the Speech-to-text table. Örneğin, --source de-DE Almanya konuşmanızı tanımak için ekleyin.For example, add --source de-DE to recognize German speech.

Mikrofona konuşun ve kelimelerinizin gerçek zamanlı olarak metne göre dökümünü görürsünüz.Speak into the microphone, and you see transcription of your words into text in real-time. Konuşma CLı, bir süre sessizden sonra durur veya CTRL-C tuşlarına basın.The Speech CLI will stop after a period of silence, or when you press ctrl-C.

Ses dosyasından konuşmayı metne dönüştürmeSpeech-to-text from audio file

Konuşma CLı, konuşmayı birçok dosya biçiminde ve doğal dillerde tanıyabilir.The Speech CLI can recognize speech in many file formats and natural languages. Bu örnekte, Ingilizce konuşma içeren herhangi bir WAV dosyasını (16kHz veya 8kHz, 16 bit ve mono PCM) kullanabilirsiniz.In this example, you can use any WAV file (16kHz or 8kHz, 16-bit, and mono PCM) that contains English speech. Ya da bir hızlı örnek isterseniz, whatsthedalgalı gibi. wav dosyasını INDIRIN ve konuşma CLI ikili dosyası ile aynı dizine kopyalayın.Or if you want a quick sample, download the whatstheweatherlike.wav file and copy it to the same directory as the Speech CLI binary file.

Artık, aşağıdaki komutu çalıştırarak ses dosyasında bulunan konuşmayı tanımak için konuşma CLı 'yı çalıştırmaya hazırsınız demektir.Now you're ready to run the Speech CLI to recognize speech found in the audio file by running the following command.

spx recognize --file whatstheweatherlike.wav

Not

Konuşma CLı varsayılan olarak Ingilizce 'Dir.The Speech CLI defaults to English. Konuşma-metin tablosundanfarklı bir dil seçebilirsiniz.You can choose a different language from the Speech-to-text table. Örneğin, --source de-DE Almanya konuşmanızı tanımak için ekleyin.For example, add --source de-DE to recognize German speech.

Konuşma CLı, ekranda konuşmanın bir metin dökümünü gösterir.The Speech CLI will show a text transcription of the speech on the screen.

Sonraki adımlarNext steps