Konuşmayı algılama

GitHub'da Başvuru belgeleri | Paketi (NuGet) | Ek Örnekler

Bu nasıl yapılır kılavuzunda, konuşmayı tanımayı ve metne gerçek zamanlı olarak dökümünü almayı öğreneceksiniz.

Konuşma yapılandırması oluşturma

Konuşma SDK'sını kullanarak Konuşma hizmetini çağırmak için bir SpeechConfig örnek oluşturmanız gerekir. Bu sınıf, anahtarınız ve ilişkili konumunuz/bölgeniz, uç noktanız, konağınız veya yetkilendirme belirteciniz gibi aboneliğinizle ilgili bilgileri içerir.

  1. Anahtarınızı ve konumunuzu/bölgenizi kullanarak bir SpeechConfig örnek oluşturun.
  2. Azure portalında konuşma kaynağı oluşturma. Daha fazla bilgi için bkz . Çok hizmetli kaynak oluşturma.
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{
    async static Task Main(string[] args)
    {
        var speechConfig = SpeechConfig.FromSubscription("YourSpeechKey", "YourSpeechRegion");
    }
}

Birkaç farklı yolla başlatabilirsiniz SpeechConfig :

  • Uç nokta kullanın ve Konuşma hizmeti uç noktasını geçirin. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.
  • Bir konak kullanın ve bir konak adresi geçirin. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.
  • İlişkili bölge/konum ile yetkilendirme belirteci kullanın.

Not

Konuşma tanıma, konuşma sentezi, çeviri veya amaç tanıma gerçekleştirmenize bakılmaksızın, her zaman bir yapılandırma oluşturursunuz.

Mikrofondan konuşmayı tanıma

Cihaz mikrofonunuzu kullanarak konuşmayı tanımak için yöntemini kullanarak FromDefaultMicrophoneInput() bir AudioConfig örnek oluşturun. Ardından ve audioConfiggeçirerek speechConfig nesnesini başlatınSpeechRecognizer.

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{
    async static Task FromMic(SpeechConfig speechConfig)
    {
        using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
        using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);

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

    async static Task Main(string[] args)
    {
        var speechConfig = SpeechConfig.FromSubscription("YourSpeechKey", "YourSpeechRegion");
        await FromMic(speechConfig);
    }
}

Belirli bir ses giriş cihazı kullanmak istiyorsanız, içinde cihaz kimliğini AudioConfigbelirtmeniz gerekir. Ses giriş cihazınızın cihaz kimliğini nasıl alacağınızı öğrenin.

Dosyadan konuşma tanıma

Konuşmayı mikrofon yerine ses dosyasından tanımak istiyorsanız yine de bir AudioConfig örnek oluşturmanız gerekir. Ama bu olay için aramazsınız FromDefaultMicrophoneInput(). Çağırıp FromWavFileInput() dosya yolunu geçirirsiniz:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{
    async static Task FromFile(SpeechConfig speechConfig)
    {
        using var audioConfig = AudioConfig.FromWavFileInput("PathToFile.wav");
        using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);

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

    async static Task Main(string[] args)
    {
        var speechConfig = SpeechConfig.FromSubscription("YourSpeechKey", "YourSpeechRegion");
        await FromFile(speechConfig);
    }
}

Bellek içi akıştan konuşma tanıma

Çoğu kullanım örneğinde, ses verilerinizin Azure Blob Depolama veya başka bir şekilde örnek veya benzer bir byte[] ham veri yapısı olarak bellekte olması olasıdır. Aşağıdaki örnek, temelde soyut bir bellek akışı olan konuşmayı tanımak için kullanır PushAudioInputStream . Örnek kod aşağıdaki eylemleri gerçekleştirir:

  • Bir örneği kabul byte[] eden işlevini kullanarak Write() ham ses verilerini (PCM) PushAudioInputStream öğesine yazar.
  • Tanıtım amacıyla kullanarak FileReader bir .wav dosyasını okur. Bir örnekte byte[] zaten ses verileriniz varsa, içeriği doğrudan giriş akışına yazmaya atlayabilirsiniz.
  • Varsayılan biçim 16 bit, 16 KHz mono pulse-code modülasyonu (PCM) verileridir. Biçimi özelleştirmek için, statik işlevini AudioStreamFormat.GetWaveFormatPCM(sampleRate, (byte)bitRate, (byte)channels)kullanarak bir AudioStreamFormat nesneyi 'ye CreatePushStream() geçirebilirsiniz.
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{
    async static Task FromStream(SpeechConfig speechConfig)
    {
        var reader = new BinaryReader(File.OpenRead("PathToFile.wav"));
        using var audioConfigStream = AudioInputStream.CreatePushStream();
        using var audioConfig = AudioConfig.FromStreamInput(audioConfigStream);
        using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);

        byte[] readBytes;
        do
        {
            readBytes = reader.ReadBytes(1024);
            audioConfigStream.Write(readBytes, readBytes.Length);
        } while (readBytes.Length > 0);

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

    async static Task Main(string[] args)
    {
        var speechConfig = SpeechConfig.FromSubscription("YourSpeechKey", "YourSpeechRegion");
        await FromStream(speechConfig);
    }
}

Giriş olarak bir anında iletme akışının kullanılması, ses verilerinin ham bir PCM olduğunu varsayar ve üst bilgileri atlar. Üst bilgi atlanmamışsa API bazı durumlarda çalışmaya devam ediyor. En iyi sonuçları elde etmek için, ses verilerinin başlangıcında başlayacak şekilde byte[] üst bilgileri okumak için mantık uygulamayı göz önünde bulundurun.

Hataları işleme

Önceki örnekler yalnızca özelliğinden result.Text tanınan metni alır. Hataları ve diğer yanıtları işlemek için, sonucu işlemek için bazı kodlar yazmanız gerekir. Aşağıdaki kod özelliğini değerlendirir result.Reason ve:

  • Tanıma sonucunu yazdırır: ResultReason.RecognizedSpeech.
  • Tanıma eşleşmesi yoksa kullanıcıyı bilgilendirir: ResultReason.NoMatch.
  • Bir hatayla karşılaşırsanız, şu hata iletisini yazdırır: ResultReason.Canceled.
switch (result.Reason)
{
    case ResultReason.RecognizedSpeech:
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
        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 set the speech resource key and region values?");
        }
        break;
}

Sürekli tanımayı kullanma

Önceki örneklerde tek bir ifadeyi tanıyan tek çekimli tanıma kullanılır. Tek bir konuşmanın sonu, sonunda veya en fazla 15 saniyelik ses işlenene kadar sessizliği dinleyerek belirlenir.

Buna karşılık, tanımanın ne zaman durdurulacağını denetlemek istediğinizde sürekli tanıma kullanırsınız. Tanıma sonuçlarını almak için Recognizing, Recognizedve Canceled olaylarına abone olmanız gerekir. Tanımayı durdurmak için öğesini çağırmalısınız StopContinuousRecognitionAsync. Aşağıda, bir ses giriş dosyasında sürekli tanımanın nasıl gerçekleştirildiğini gösteren bir örnek verilmiştir.

Girişi tanımlayıp başlatarak SpeechRecognizerbaşlayın:

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

Ardından konuşma tanıma durumunu yönetmek için bir TaskCompletionSource<int> örnek oluşturun:

var stopRecognition = new TaskCompletionSource<int>();

Ardından, gönderen SpeechRecognizer olaylara abone olun:

  • Recognizing: Ara tanıma sonuçları içeren olaylar için sinyal.
  • Recognized: Başarılı bir tanıma girişimini gösteren son tanıma sonuçlarını içeren olaylar için sinyal.
  • SessionStopped: Tanıma oturumunun (işlem) sonunu gösteren olaylar için sinyal.
  • Canceled: İptal edilen tanıma sonuçlarını içeren olaylar için sinyal. Bu sonuçlar, doğrudan iptal isteğinin sonucu olarak iptal edilen bir tanıma girişimini gösterir. Alternatif olarak, bir aktarım veya protokol hatası olduğunu gösterirler.
speechRecognizer.Recognizing += (s, e) =>
{
    Console.WriteLine($"RECOGNIZING: Text={e.Result.Text}");
};

speechRecognizer.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.");
    }
};

speechRecognizer.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 set the speech resource key and region values?");
    }

    stopRecognition.TrySetResult(0);
};

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

Her şey ayarlandıktan sonra şunları tanımaya başlamak için arayın StartContinuousRecognitionAsync :

await speechRecognizer.StartContinuousRecognitionAsync();

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

// Make the following call at some point to stop recognition:
// await speechRecognizer.StopContinuousRecognitionAsync();

Kaynak dili değiştirme

Konuşma tanıma için sık kullanılan bir görev, giriş (veya kaynak) dilini belirtmektir. Aşağıdaki örnekte giriş dilinin İtalyanca olarak nasıl değiştireceği gösterilmektedir. Kodunuzda örneğinizi SpeechConfig bulun ve bu satırı doğrudan altına ekleyin:

speechConfig.SpeechRecognitionLanguage = "it-IT";

SpeechRecognitionLanguage özelliği bir dil-yerel ayar biçim dizesi bekler. Daha fazla bilgi için desteklenen konuşma metin yerel ayarları listesine bakın.

Dil belirleme

Bir ses kaynağında dili tanımlamanız ve ardından metne dönüştürmeniz gerektiğinde, konuşmadan metin tanımaya dil tanımlama özelliğini kullanabilirsiniz.

Eksiksiz bir kod örneği için bkz . Dil belirleme.

Özel uç nokta kullanma

Özel konuşma ile kendi verilerinizi karşıya yükleyebilir, özel bir modeli test edebilir ve eğitebilir, modeller arasındaki doğruluğu karşılaştırabilir ve modeli özel uç noktaya dağıtabilirsiniz. Aşağıdaki örnekte özel uç noktanın nasıl ayarlanacağı gösterilmektedir.

var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");
speechConfig.EndpointId = "YourEndpointId";
var speechRecognizer = new SpeechRecognizer(speechConfig);

Kapsayıcı çalıştırma ve kullanma

Konuşma kapsayıcıları, Konuşma SDK'sı ve Konuşma CLI'sı aracılığıyla erişilen websocket tabanlı sorgu uç noktası API'leri sağlar. Varsayılan olarak, Konuşma SDK'sı ve Konuşma CLI'sı genel Konuşma hizmetini kullanır. Kapsayıcıyı kullanmak için başlatma yöntemini değiştirmeniz gerekir. Anahtar ve bölge yerine kapsayıcı ana bilgisayar URL'si kullanın.

Kapsayıcılar hakkında daha fazla bilgi için bkz . Docker ile Konuşma kapsayıcılarını yükleme ve çalıştırma makalesindeki Konak URL'leri .

Sessizliğin nasıl işleneceğini değiştirme

Bir kullanıcının normalden daha hızlı veya daha yavaş konuşması bekleniyorsa, giriş sesindeki sessizliğe yönelik varsayılan davranışlar beklediğiniz sonuçla sonuçlanamayabilir. Sessizlik işlemeyle ilgili yaygın sorunlar şunlardır:

  • Birçok cümleyi tek bir tanıma sonucuna zincirleme hızlı konuşma, cümleleri tek tek sonuçlara bölmek yerine.
  • Tek bir cümlenin parçalarını birden çok sonuce ayıran yavaş konuşma.
  • Konuşmanın başlamasını beklerken çok hızlı biten tek seferlik bir tanıma.

Bu sorunlar, oluşturmak SpeechRecognizeriçin kullanılan örnekteki iki zaman aşımı özelliğindenSpeechConfig biri ayarlanarak giderilebilir:

  • Segmentasyon sessizliği zaman aşımı , söz konusu tümcecik "bitti" olarak kabul edilmeden önce şu anda konuşulan bir tümcecik içinde ne kadar kesintisiz sese izin verildiğini ayarlar.
    • Daha yüksek değerler genellikle sonuçları daha uzun hale getirir ve bir tümcecik içinde konuşmacıdan daha uzun duraklamalar sağlar, ancak sonuçların gelmesi daha uzun sürer. Ayrıca, çok yüksek ayarlandığında ayrı tümceciklerin tek bir sonuca birleştirilmesini de sağlayabilirler.
    • Düşük değerler genellikle sonuçları kısaltır ve tümcecikler arasında daha fazla istem ve sık kesme olmasını sağlar, ancak çok düşük ayarlandığında tek tümceciklerin birden çok sonuca ayrılmasına da neden olabilir.
    • Bu zaman aşımı milisaniye cinsinden 100 ile 5000 arasında tamsayı değerlerine ayarlanabilir ve 500 tipik bir varsayılan değerdir.
  • İlk sessizlik zaman aşımı, tanıma girişimi "eşleşme yok" sonucuyla bitmeden önce bir tümcecik öncesinde ne kadar sese izin verilmeyen sese izin verildiğinden emin olur.
    • Daha yüksek değerler, konuşmacılara tepki vermek ve konuşmaya başlamak için daha fazla zaman verir, ancak hiçbir şey konuşulmadığında yavaş yanıt vermesine de neden olabilir.
    • Düşük değerler, daha hızlı kullanıcı deneyimi ve daha kontrollü ses işleme için "eşleşme yok" istemi sağlar, ancak çok düşük ayarlandığında hoparlörü çok hızlı kesebilir.
    • Sürekli tanıma birçok sonuç oluşturduğundan, bu değer "eşleşme yok" sonuçlarının ne sıklıkta geldiğini belirler, ancak tanıma sonuçlarının içeriğini başka türlü etkilemez.
    • Bu zaman aşımı milisaniye cinsinden negatif olmayan herhangi bir tamsayı değerine veya tamamen devre dışı bırakmak için 0 olarak ayarlanabilir. 5000, tek çekimli tanıma için tipik bir varsayılan değerdir, 15000 ise sürekli tanıma için tipik bir varsayılandır.

Bu zaman aşımlarını değiştirirken dezavantajlar olduğundan, ayarları yalnızca sessiz işlemeyle ilgili bir sorun olduğunda değiştirmeniz gerekir. Varsayılan değerler en iyi şekilde konuşulan sesi işler ve yalnızca yaygın olmayan senaryolarda sorunlarla karşılaşılmalıdır.

Örnek: "ABC-123-4567" gibi bir seri numarası konuşan kullanıcılar, seri numarasının birden çok sonucta bölünmesi için karakter grupları arasında yeterince duraklatılabilir. Bu durumda segmentasyon sessizliği zaman aşımı için 2000 ms gibi daha yüksek bir değer deneyin:

speechConfig.SetProperty(PropertyId.Speech_SegmentationSilenceTimeoutMs, "2000");

Örnek: Kaydedilen bir sunucunun konuşması, bir satırdaki birkaç cümlenin birleştirileceği kadar hızlı olabilir ve büyük tanıma sonuçları dakikada yalnızca bir veya iki kez gelir. Bu durumda segmentasyon sessizliği zaman aşımını 300 ms gibi daha düşük bir değere ayarlayın:

speechConfig.SetProperty(PropertyId.Speech_SegmentationSilenceTimeoutMs, "300");

Örnek: Konuşmacıdan seri numarasını bulmasını ve okumasını isteyen tek çekimli tanıma, sayı bulunurken çok hızlı sona erer. Bu durumda, 10.000 ms gibi daha uzun bir ilk sessizlik zaman aşımı deneyin:

speechConfig.SetProperty(PropertyId.SpeechServiceConnection_InitialSilenceTimeoutMs, "10000");

GitHub'da Başvuru belgeleri | Paketi (NuGet) | Ek Örnekler

Bu nasıl yapılır kılavuzunda, konuşmayı tanımayı ve metne gerçek zamanlı olarak dökümünü almayı öğreneceksiniz.

Konuşma yapılandırması oluşturma

Konuşma SDK'sını kullanarak Konuşma hizmetini çağırmak için bir SpeechConfig örnek oluşturmanız gerekir. Bu sınıf, anahtarınız ve ilişkili konumunuz/bölgeniz, uç noktanız, konağınız veya yetkilendirme belirteciniz gibi aboneliğinizle ilgili bilgileri içerir.

  1. Anahtarınızı ve bölgenizi kullanarak bir SpeechConfig örnek oluşturun.
  2. Azure portalında konuşma kaynağı oluşturma. Daha fazla bilgi için bkz . Çok hizmetli kaynak oluşturma.
using namespace std;
using namespace Microsoft::CognitiveServices::Speech;

auto speechConfig = SpeechConfig::FromSubscription("YourSpeechKey", "YourSpeechRegion");

Birkaç farklı yolla başlatabilirsiniz SpeechConfig :

  • Uç nokta kullanın ve Konuşma hizmeti uç noktasını geçirin. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.
  • Bir konak kullanın ve bir konak adresi geçirin. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.
  • İlişkili bölge/konum ile yetkilendirme belirteci kullanın.

Not

Konuşma tanıma, konuşma sentezi, çeviri veya amaç tanıma gerçekleştirmenize bakılmaksızın, her zaman bir yapılandırma oluşturursunuz.

Mikrofondan konuşmayı tanıma

Cihaz mikrofonunuzu kullanarak konuşmayı tanımak için üye işlevini kullanarak FromDefaultMicrophoneInput() bir AudioConfig örnek oluşturun. Ardından ve configgeçirerek audioConfig nesnesini başlatınSpeechRecognizer.

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

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

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

Belirli bir ses giriş cihazı kullanmak istiyorsanız, içinde cihaz kimliğini AudioConfigbelirtmeniz gerekir. Ses giriş cihazınızın cihaz kimliğini alma hakkında daha fazla bilgi için bkz . Konuşma SDK'sı ile ses giriş cihazı seçme

Dosyadan konuşma tanıma

Mikrofon kullanmak yerine ses dosyasından konuşmayı tanımak istiyorsanız yine de bir AudioConfig örnek oluşturmanız gerekir. Ama bu olay için aramazsınız FromDefaultMicrophoneInput(). Çağırıp FromWavFileInput() dosya yolunu geçirirsiniz:

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

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

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

Tanıma sınıfını kullanarak konuşmayı tanıma

C++ için Konuşma SDK'sının Tanıma sınıfı , konuşma tanıma için kullanabileceğiniz birkaç yöntemi kullanıma sunar.

Tek seferlik tanıma

Tek seferlik tanıma, tek bir ifadeyi zaman uyumsuz olarak tanır. Tek bir konuşmanın sonu, sonunda veya en fazla 15 saniyelik ses işlenene kadar sessizliği dinleyerek belirlenir. Aşağıda aracılığıyla zaman uyumsuz tek seferlik tanıma örneği verilmiştir RecognizeOnceAsync:

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

Sonucu işlemek için kod yazmanız gerekir. Bu örnek ve değerlerini değerlendirir result->Reason :

  • Tanıma sonucunu yazdırır: ResultReason::RecognizedSpeech.
  • Tanıma eşleşmesi yoksa kullanıcıyı bilgilendirir: ResultReason::NoMatch.
  • Bir hatayla karşılaşırsanız, şu hata iletisini yazdırır: 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 set the speech resource key and region values?" << std::endl;
            }
        }
        break;
    default:
        break;
}

Sürekli tanıma

Sürekli tanıma, tek seferlik tanımaya kıyasla biraz daha fazla söz konusudur. Tanıma sonuçlarını almak için Recognizing, Recognizedve Canceled olaylarına abone olmanız gerekir. Tanımayı durdurmak için StopContinuousRecognitionAsync'i çağırmanız gerekir. Aşağıda, bir ses giriş dosyasında sürekli tanımanın nasıl gerçekleştirildiğini gösteren bir örnek verilmiştir.

Girişi tanımlayıp başlatarak SpeechRecognizerbaşlayın:

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

Ardından, konuşma tanıma durumunu yönetmek için bir değişken oluşturun. Bildirimin promise<void> nedeni, tanımanın başlangıcında tamamlanmadığını güvenle varsayabilirsiniz:

promise<void> recognitionEnd;

Ardından, gönderen SpeechRecognizer olaylara abone olun:

  • Recognizing: Ara tanıma sonuçları içeren olaylar için sinyal.
  • Recognized: Başarılı bir tanıma girişimini gösteren son tanıma sonuçlarını içeren olaylar için sinyal.
  • SessionStopped: Tanıma oturumunun (işlem) sonunu gösteren olaylar için sinyal.
  • Canceled: İptal edilen tanıma sonuçlarını içeren olaylar için sinyal. Bu sonuçlar, doğrudan iptal isteği sonucu iptal edilen bir tanıma girişimini gösterir. Alternatif olarak, bir aktarım veya protokol hatası olduğunu gösterirler.
speechRecognizer->Recognizing.Connect([](const SpeechRecognitionEventArgs& e)
    {
        cout << "Recognizing:" << e.Result->Text << std::endl;
    });

speechRecognizer->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;
        }
    });

speechRecognizer->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 set the speech resource key and region values?" << std::endl;

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

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

Her şey ayarlandıktan sonra şunları tanımaya başlamak için arayın StopContinuousRecognitionAsync :

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

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

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

Kaynak dili değiştirme

Konuşma tanıma için sık kullanılan bir görev, giriş (veya kaynak) dilini belirtmektir. Aşağıdaki örnekte giriş dilinin Almanca olarak nasıl değiştireceği gösterilmektedir. Kodunuzda örneğinizi SpeechConfig bulun ve bu satırı doğrudan altına ekleyin:

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

SetSpeechRecognitionLanguage bir dizeyi bağımsız değişken olarak alan bir parametredir. Daha fazla bilgi için desteklenen konuşma metin yerel ayarları listesine bakın.

Dil belirleme

Bir ses kaynağında dili tanımlamanız ve ardından metne dönüştürmeniz gerektiğinde, konuşmadan metin tanımaya dil tanımlama özelliğini kullanabilirsiniz.

Eksiksiz bir kod örneği için bkz . Dil belirleme.

Özel uç nokta kullanma

Özel konuşma ile kendi verilerinizi karşıya yükleyebilir, özel bir modeli test edebilir ve eğitebilir, modeller arasındaki doğruluğu karşılaştırabilir ve modeli özel uç noktaya dağıtabilirsiniz. Aşağıdaki örnekte özel uç noktanın nasıl ayarlanacağı gösterilmektedir.

auto speechConfig = SpeechConfig::FromSubscription("YourSubscriptionKey", "YourServiceRegion");
speechConfig->SetEndpointId("YourEndpointId");
auto speechRecognizer = SpeechRecognizer::FromConfig(speechConfig);

Kapsayıcı çalıştırma ve kullanma

Konuşma kapsayıcıları, Konuşma SDK'sı ve Konuşma CLI'sı aracılığıyla erişilen websocket tabanlı sorgu uç noktası API'leri sağlar. Varsayılan olarak, Konuşma SDK'sı ve Konuşma CLI'sı genel Konuşma hizmetini kullanır. Kapsayıcıyı kullanmak için başlatma yöntemini değiştirmeniz gerekir. Anahtar ve bölge yerine kapsayıcı ana bilgisayar URL'si kullanın.

Kapsayıcılar hakkında daha fazla bilgi için bkz . Docker ile Konuşma kapsayıcılarını yükleme ve çalıştırma makalesindeki Konak URL'leri .

GitHub'da Başvuru belgeleri | Paketi (Go) | Ek Örnekler

Bu nasıl yapılır kılavuzunda, konuşmayı tanımayı ve metne gerçek zamanlı olarak dökümünü almayı öğreneceksiniz.

Mikrofondan metne konuşmayı tanıma

Varsayılan cihaz mikrofonunuzdan konuşma tanımayı çalıştırmak için aşağıdaki kod örneğini kullanın. ve değişkenlerini subscriptionregion sırasıyla konuşma anahtarınızla ve konumunuzla/bölgenizle değiştirin. Azure portalında konuşma kaynağı oluşturma. Daha fazla bilgi için bkz . Çok hizmetli kaynak oluşturma. Betiği çalıştırmak, varsayılan mikrofonunuzda ve çıkış metninizde bir tanıma oturumu başlatır:

package main

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)
	fmt.Println("Did you set the speech resource key and region values?")
}

func main() {
    subscription :=  "YourSpeechKey"
    region := "YourSpeechRegion"

	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')
}

GitHub'da barındırılan bileşenlere bağlanan bir go.mod dosyası oluşturmak için aşağıdaki komutları çalıştırın:

go mod init quickstart
go get github.com/Microsoft/cognitive-services-speech-sdk-go

Şimdi kodu derleyin ve çalıştırın:

go build
go run quickstart

Ayrıntılı bilgi için sınıfının başvuru içeriğine ve sınıfınbaşvuru içeriğineSpeechRecognizer bakın.SpeechConfig

Ses dosyasından konuşmayı metne dönüştürmeyi tanıma

Ses dosyasından konuşma tanımayı çalıştırmak için aşağıdaki örneği kullanın. ve değişkenlerini subscriptionregion sırasıyla konuşma anahtarınızla ve konumunuzla/bölgenizle değiştirin. Azure portalında konuşma kaynağı oluşturma. Daha fazla bilgi için bkz . Çok hizmetli kaynak oluşturma. Ayrıca, değişkeni file bir .wav dosyasının yoluyla değiştirin. Betiği çalıştırdığınızda, dosyadan konuşmayı tanır ve metin sonucunu verir:

package main

import (
	"fmt"
	"time"

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

func main() {
    subscription :=  "YourSpeechKey"
    region := "YourSpeechRegion"
    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)
}

GitHub'da barındırılan bileşenlere bağlanan bir go.mod dosyası oluşturmak için aşağıdaki komutları çalıştırın:

go mod init quickstart
go get github.com/Microsoft/cognitive-services-speech-sdk-go

Şimdi kodu derleyin ve çalıştırın:

go build
go run quickstart

Ayrıntılı bilgi için sınıfının başvuru içeriğine ve sınıfınbaşvuru içeriğineSpeechRecognizer bakın.SpeechConfig

Kapsayıcı çalıştırma ve kullanma

Konuşma kapsayıcıları, Konuşma SDK'sı ve Konuşma CLI'sı aracılığıyla erişilen websocket tabanlı sorgu uç noktası API'leri sağlar. Varsayılan olarak, Konuşma SDK'sı ve Konuşma CLI'sı genel Konuşma hizmetini kullanır. Kapsayıcıyı kullanmak için başlatma yöntemini değiştirmeniz gerekir. Anahtar ve bölge yerine kapsayıcı ana bilgisayar URL'si kullanın.

Kapsayıcılar hakkında daha fazla bilgi için bkz . Docker ile Konuşma kapsayıcılarını yükleme ve çalıştırma makalesindeki Konak URL'leri .

Başvuru belgeleri | GitHub'da Ek Örnekler

Bu nasıl yapılır kılavuzunda, konuşmayı tanımayı ve metne gerçek zamanlı olarak dökümünü almayı öğreneceksiniz.

Konuşma yapılandırması oluşturma

Konuşma SDK'sını kullanarak Konuşma hizmetini çağırmak için bir SpeechConfig örneği oluşturmanız gerekir. Bu sınıf, anahtarınız ve ilişkili konumunuz/bölgeniz, uç noktanız, konağınız veya yetkilendirme belirteciniz gibi aboneliğinizle ilgili bilgileri içerir.

  1. Anahtarınızı ve konumunuzu/bölgenizi kullanarak bir SpeechConfig örnek oluşturun.
  2. Azure portalında konuşma kaynağı oluşturma. Daha fazla bilgi için bkz . Çok hizmetli kaynak oluşturma.
import com.microsoft.cognitiveservices.speech.*;
import com.microsoft.cognitiveservices.speech.audio.AudioConfig;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

public class Program {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        SpeechConfig speechConfig = SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
    }
}

Birkaç farklı yolla başlatabilirsiniz SpeechConfig :

  • Uç nokta kullanın ve Konuşma hizmeti uç noktasını geçirin. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.
  • Bir konak kullanın ve bir konak adresi geçirin. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.
  • İlişkili bölge/konum ile yetkilendirme belirteci kullanın.

Not

Konuşma tanıma, konuşma sentezi, çeviri veya amaç tanıma gerçekleştirmenize bakılmaksızın, her zaman bir yapılandırma oluşturursunuz.

Mikrofondan konuşmayı tanıma

Cihaz mikrofonunuzu kullanarak konuşmayı tanımak için yöntemini kullanarak fromDefaultMicrophoneInput() bir AudioConfig örnek oluşturun. Ardından ve configgeçirerek audioConfig nesnesini başlatınSpeechRecognizer.

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

public class Program {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        SpeechConfig speechConfig = SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
        fromMic(speechConfig);
    }

    public static void fromMic(SpeechConfig speechConfig) throws InterruptedException, ExecutionException {
        AudioConfig audioConfig = AudioConfig.fromDefaultMicrophoneInput();
        SpeechRecognizer speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);

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

Belirli bir ses giriş cihazı kullanmak istiyorsanız, içinde cihaz kimliğini AudioConfigbelirtmeniz gerekir. Ses giriş cihazınızın cihaz kimliğini alma hakkında daha fazla bilgi için bkz . Konuşma SDK'sı ile ses giriş cihazı seçme.

Dosyadan konuşma tanıma

Mikrofon kullanmak yerine ses dosyasından konuşmayı tanımak istiyorsanız yine de bir AudioConfig örnek oluşturmanız gerekir. Ama bu olay için aramazsınız FromDefaultMicrophoneInput(). Çağırıp fromWavFileInput() dosya yolunu geçirirsiniz:

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

public class Program {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        SpeechConfig speechConfig = SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
        fromFile(speechConfig);
    }

    public static void fromFile(SpeechConfig speechConfig) throws InterruptedException, ExecutionException {
        AudioConfig audioConfig = AudioConfig.fromWavFileInput("YourAudioFile.wav");
        SpeechRecognizer speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);
        
        Future<SpeechRecognitionResult> task = speechRecognizer.recognizeOnceAsync();
        SpeechRecognitionResult result = task.get();
        System.out.println("RECOGNIZED: Text=" + result.getText());
    }
}

Hataları işleme

Önceki örnekler yalnızca kullanarak result.getText()tanınan metni alır. Hataları ve diğer yanıtları işlemek için, sonucu işlemek için bazı kodlar yazmanız gerekir. Aşağıdaki örnek ve değerlerini değerlendirir result.getReason() :

  • Tanıma sonucunu yazdırır: ResultReason.RecognizedSpeech.
  • Tanıma eşleşmesi yoksa kullanıcıyı bilgilendirir: ResultReason.NoMatch.
  • Bir hatayla karşılaşırsanız, şu hata iletisini yazdırır: 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 set the speech resource key and region values?");
            }
        }
        break;
}

Sürekli tanımayı kullanma

Önceki örneklerde tek bir ifadeyi tanıyan tek çekimli tanıma kullanılır. Tek bir konuşmanın sonu, sonunda veya en fazla 15 saniyelik ses işlenene kadar sessizliği dinleyerek belirlenir.

Buna karşılık, tanımanın ne zaman durdurulacağını denetlemek istediğinizde sürekli tanıma kullanırsınız. Tanıma sonuçlarını almak için recognizing, recognizedve canceled olaylarına abone olmanız gerekir. Tanımayı durdurmak için öğesini çağırmalısınız stopContinuousRecognitionAsync. Bir ses giriş dosyasında sürekli tanımayı nasıl gerçekleştirebileceğinize ilişkin bir örnek aşağıda verilmiştır.

Girişi tanımlayıp başlatarak SpeechRecognizerbaşlayın:

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

Ardından, konuşma tanıma durumunu yönetmek için bir değişken oluşturun. Sınıf kapsamında bir Semaphore örnek bildirin:

private static Semaphore stopTranslationWithFileSemaphore;

Ardından, gönderen SpeechRecognizer olaylara abone olun:

  • recognizing: Ara tanıma sonuçları içeren olaylar için sinyal.
  • recognized: Başarılı bir tanıma girişimini gösteren son tanıma sonuçlarını içeren olaylar için sinyal.
  • sessionStopped: Tanıma oturumunun (işlem) sonunu gösteren olaylar için sinyal.
  • canceled: İptal edilen tanıma sonuçlarını içeren olaylar için sinyal. Bu sonuçlar, doğrudan iptal isteğinin sonucu olarak iptal edilen bir tanıma girişimini gösterir. Alternatif olarak, bir aktarım veya protokol hatası olduğunu gösterirler.
// First initialize the semaphore.
stopTranslationWithFileSemaphore = new Semaphore(0);

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

speechRecognizer.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.");
    }
});

speechRecognizer.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 set the speech resource key and region values?");
    }

    stopTranslationWithFileSemaphore.release();
});

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

Her şey ayarlandıktan sonra şunları tanımaya başlamak için arayın startContinuousRecognitionAsync :

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

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

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

Kaynak dili değiştirme

Konuşma tanıma için sık kullanılan bir görev, giriş (veya kaynak) dilini belirtmektir. Aşağıdaki örnekte giriş dilinin Fransızca olarak nasıl değiştireceği gösterilmektedir. Kodunuzda örneğinizi SpeechConfig bulun ve bu satırı doğrudan altına ekleyin:

config.setSpeechRecognitionLanguage("fr-FR");

setSpeechRecognitionLanguage bir dizeyi bağımsız değişken olarak alan bir parametredir. Desteklenen konuşma metin yerel ayarları listesine bakın.

Dil belirleme

Bir ses kaynağında dili tanımlamanız ve ardından metne dönüştürmeniz gerektiğinde, konuşmadan metin tanımaya dil tanımlama özelliğini kullanabilirsiniz.

Eksiksiz bir kod örneği için bkz . Dil belirleme.

Özel uç nokta kullanma

Özel konuşma ile kendi verilerinizi karşıya yükleyebilir, özel bir modeli test edebilir ve eğitebilir, modeller arasındaki doğruluğu karşılaştırabilir ve modeli özel uç noktaya dağıtabilirsiniz. Aşağıdaki örnekte özel uç noktanın nasıl ayarlanacağı gösterilmektedir:

SpeechConfig speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");
speechConfig.setEndpointId("YourEndpointId");
SpeechRecognizer speechRecognizer = new SpeechRecognizer(speechConfig);

Kapsayıcı çalıştırma ve kullanma

Konuşma kapsayıcıları, Konuşma SDK'sı ve Konuşma CLI'sı aracılığıyla erişilen websocket tabanlı sorgu uç noktası API'leri sağlar. Varsayılan olarak, Konuşma SDK'sı ve Konuşma CLI'sı genel Konuşma hizmetini kullanır. Kapsayıcıyı kullanmak için başlatma yöntemini değiştirmeniz gerekir. Anahtar ve bölge yerine kapsayıcı ana bilgisayar URL'si kullanın.

Kapsayıcılar hakkında daha fazla bilgi için bkz . Docker ile Konuşma kapsayıcılarını yükleme ve çalıştırma makalesindeki Konak URL'leri .

Başvuru belgeleri | Paketi (npm) | GitHub | Kitaplığı kaynak kodunda ek örnekler

Bu nasıl yapılır kılavuzunda, konuşmayı tanımayı ve metne gerçek zamanlı olarak dökümünü almayı öğreneceksiniz.

Konuşma yapılandırması oluşturma

Konuşma SDK'sını kullanarak Konuşma hizmetini çağırmak için bir SpeechConfig örnek oluşturmanız gerekir. Bu sınıf, anahtarınız ve ilişkili konumunuz/bölgeniz, uç noktanız, konağınız veya yetkilendirme belirteciniz gibi aboneliğinizle ilgili bilgileri içerir.

  1. Anahtarınızı ve konumunuzu/bölgenizi kullanarak bir SpeechConfig örnek oluşturun.
  2. Azure portalında konuşma kaynağı oluşturma. Daha fazla bilgi için bkz . Çok hizmetli kaynak oluşturma.
const speechConfig = sdk.SpeechConfig.fromSubscription("YourSpeechKey", "YourSpeechRegion");

Birkaç farklı yolla başlatabilirsiniz SpeechConfig :

  • Uç nokta kullanın ve Konuşma hizmeti uç noktasını geçirin. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.
  • Bir konak kullanın ve bir konak adresi geçirin. Anahtar veya yetkilendirme belirteci isteğe bağlıdır.
  • İlişkili bölge/konum ile yetkilendirme belirteci kullanın.

Not

Konuşma tanıma, konuşma sentezi, çeviri veya amaç tanıma gerçekleştirmenize bakılmaksızın, her zaman bir yapılandırma oluşturursunuz.

Mikrofondan konuşmayı tanıma

Mikrofondan konuşma tanıma özelliği Node.js desteklenmez. Yalnızca tarayıcı tabanlı bir JavaScript ortamında desteklenir. Daha fazla bilgi için React örneğine ve GitHub'da bir mikrofondan metne konuşma uygulama bölümüne bakın. React örneği, kimlik doğrulama belirteçlerinin değişimi ve yönetimi için tasarım desenlerini gösterir. Ayrıca, konuşmayı metne dönüştürme için bir mikrofondan veya dosyadan ses yakalamayı da gösterir.

Not

Belirli bir ses giriş cihazı kullanmak istiyorsanız, nesnede AudioConfig cihaz kimliğini belirtmeniz gerekir. Daha fazla bilgi için bkz . Konuşma SDK'sı ile ses giriş cihazı seçme.

Dosyadan konuşma tanıma

Ses dosyasından konuşmayı tanımak için nesnesini kabul eden yöntemini kullanarak fromWavFileInput() bir Buffer örnek oluşturunAudioConfig. Ardından ve speechConfiggeçirerek audioConfig başlatınSpeechRecognizer.

const fs = require('fs');
const sdk = require("microsoft-cognitiveservices-speech-sdk");
const speechConfig = sdk.SpeechConfig.fromSubscription("YourSpeechKey", "YourSpeechRegion");

function fromFile() {
    let audioConfig = sdk.AudioConfig.fromWavFileInput(fs.readFileSync("YourAudioFile.wav"));
    let speechRecognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);

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

Bellek içi akıştan konuşma tanıma

Birçok kullanım örneğinde ses verileriniz büyük olasılıkla Azure Blob Depolama... Veya zaten bellekte bir veya benzer bir ArrayBuffer ham veri yapısı olarak yer alır. Aşağıdaki kod:

  • kullanarak createPushStream()bir anında iletme akışı oluşturur.
  • Tanıtım amacıyla kullanarak fs.createReadStream bir .wav dosyasını okur. içinde ArrayBufferzaten ses verileriniz varsa, içeriği giriş akışına yazmaya doğrudan atlayabilirsiniz.
  • Anında iletme akışını kullanarak bir ses yapılandırması oluşturur.
const fs = require('fs');
const sdk = require("microsoft-cognitiveservices-speech-sdk");
const speechConfig = sdk.SpeechConfig.fromSubscription("YourSpeechKey", "YourSpeechRegion");

function fromStream() {
    let pushStream = sdk.AudioInputStream.createPushStream();

    fs.createReadStream("YourAudioFile.wav").on('data', function(arrayBuffer) {
        pushStream.write(arrayBuffer.slice());
    }).on('end', function() {
        pushStream.close();
    });
 
    let audioConfig = sdk.AudioConfig.fromStreamInput(pushStream);
    let speechRecognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);
    speechRecognizer.recognizeOnceAsync(result => {
        console.log(`RECOGNIZED: Text=${result.text}`);
        speechRecognizer.close();
    });
}
fromStream();

Giriş olarak bir anında iletme akışının kullanılması, ses verilerinin üst bilgileri atlayan ham bir pulse-code modülasyonu (PCM) verileri olduğunu varsayar. Üst bilgi atlanmadıysa API bazı durumlarda çalışmaya devam ediyor. En iyi sonuçları elde etmek için, ses verilerinin başlangıcında başlayacak şekilde fs üst bilgileri okumak için mantık uygulamayı göz önünde bulundurun.

Hataları işleme

Önceki örnekler yalnızca özelliğinden result.text tanınan metni alır. Hataları ve diğer yanıtları işlemek için, sonucu işlemek için bazı kodlar yazmanız gerekir. Aşağıdaki kod özelliğini değerlendirir result.reason ve:

  • Tanıma sonucunu yazdırır: ResultReason.RecognizedSpeech.
  • Tanıma eşleşmesi yoksa kullanıcıyı bilgilendirir: ResultReason.NoMatch.
  • Bir hatayla karşılaşırsanız, şu hata iletisini yazdırır: ResultReason.Canceled.
switch (result.reason) {
    case sdk.ResultReason.RecognizedSpeech:
        console.log(`RECOGNIZED: Text=${result.text}`);
        break;
    case sdk.ResultReason.NoMatch:
        console.log("NOMATCH: Speech could not be recognized.");
        break;
    case sdk.ResultReason.Canceled:
        const cancellation = sdk.CancellationDetails.fromResult(result);
        console.log(`CANCELED: Reason=${cancellation.reason}`);

        if (cancellation.reason == sdk.CancellationReason.Error) {
            console.log(`CANCELED: ErrorCode=${cancellation.ErrorCode}`);
            console.log(`CANCELED: ErrorDetails=${cancellation.errorDetails}`);
            console.log("CANCELED: Did you set the speech resource key and region values?");
        }
        break;
    }

Sürekli tanımayı kullanma

Önceki örneklerde tek bir ifadeyi tanıyan tek çekimli tanıma kullanılır. Tek bir konuşmanın sonu, sonunda veya en fazla 15 saniyelik ses işlenene kadar sessizliği dinleyerek belirlenir.

Buna karşılık, tanımanın ne zaman durdurulacağını denetlemek istediğinizde sürekli tanımayı kullanabilirsiniz. Tanıma sonuçlarını almak için Recognizing, Recognizedve Canceled olaylarına abone olmanız gerekir. Tanımayı durdurmak için öğesini çağırmalısınız stopContinuousRecognitionAsync. Aşağıda, bir ses giriş dosyasında sürekli tanımanın nasıl gerçekleştirildiğini gösteren bir örnek verilmiştir.

Girişi tanımlayıp başlatarak SpeechRecognizerbaşlayın:

const speechRecognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);

Ardından, öğesinden SpeechRecognizergönderilen olaylara abone olun:

  • recognizing: Ara tanıma sonuçları içeren olaylar için sinyal.
  • recognized: Başarılı bir tanıma girişimini gösteren son tanıma sonuçlarını içeren olaylar için sinyal.
  • sessionStopped: Tanıma oturumunun (işlem) sonunu gösteren olaylar için sinyal.
  • canceled: İptal edilen tanıma sonuçlarını içeren olaylar için sinyal. Bu sonuçlar, doğrudan iptal isteğinin sonucu olarak iptal edilen bir tanıma girişimini gösterir. Alternatif olarak, bir aktarım veya protokol hatası olduğunu gösterirler.
speechRecognizer.recognizing = (s, e) => {
    console.log(`RECOGNIZING: Text=${e.result.text}`);
};

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

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

    if (e.reason == sdk.CancellationReason.Error) {
        console.log(`"CANCELED: ErrorCode=${e.errorCode}`);
        console.log(`"CANCELED: ErrorDetails=${e.errorDetails}`);
        console.log("CANCELED: Did you set the speech resource key and region values?");
    }

    speechRecognizer.stopContinuousRecognitionAsync();
};

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

Her şey ayarlandıktan sonra şunları tanımaya başlamak için arayın startContinuousRecognitionAsync :

speechRecognizer.startContinuousRecognitionAsync();

// Make the following call at some point to stop recognition:
// speechRecognizer.stopContinuousRecognitionAsync();

Kaynak dili değiştirme

Konuşma tanıma için sık kullanılan bir görev, giriş (veya kaynak) dilini belirtmektir. Aşağıdaki örnekte giriş dilinin İtalyanca olarak nasıl değiştireceği gösterilmektedir. Kodunuzda örneğinizi SpeechConfig bulun ve bu satırı doğrudan altına ekleyin:

speechConfig.speechRecognitionLanguage = "it-IT";

speechRecognitionLanguage özelliği bir dil-yerel ayar biçim dizesi bekler. Daha fazla bilgi için desteklenen konuşma metin yerel ayarları listesine bakın.

Dil belirleme

Bir ses kaynağında dili tanımlamanız ve ardından metne dönüştürmeniz gerektiğinde, konuşmadan metin tanımaya dil tanımlama özelliğini kullanabilirsiniz.

Eksiksiz bir kod örneği için bkz . Dil belirleme.

Özel uç nokta kullanma

Özel konuşma ile kendi verilerinizi karşıya yükleyebilir, özel bir modeli test edebilir ve eğitebilir, modeller arasındaki doğruluğu karşılaştırabilir ve modeli özel uç noktaya dağıtabilirsiniz. Aşağıdaki örnekte özel uç noktanın nasıl ayarlanacağı gösterilmektedir.

var speechConfig = SpeechSDK.SpeechConfig.fromSubscription("YourSubscriptionKey", "YourServiceRegion");
speechConfig.endpointId = "YourEndpointId";
var speechRecognizer = new SpeechSDK.SpeechRecognizer(speechConfig);

Kapsayıcı çalıştırma ve kullanma

Konuşma kapsayıcıları, Konuşma SDK'sı ve Konuşma CLI'sı aracılığıyla erişilen websocket tabanlı sorgu uç noktası API'leri sağlar. Varsayılan olarak, Konuşma SDK'sı ve Konuşma CLI'sı genel Konuşma hizmetini kullanır. Kapsayıcıyı kullanmak için başlatma yöntemini değiştirmeniz gerekir. Anahtar ve bölge yerine kapsayıcı ana bilgisayar URL'si kullanın.

Kapsayıcılar hakkında daha fazla bilgi için bkz . Docker ile Konuşma kapsayıcılarını yükleme ve çalıştırma makalesindeki Konak URL'leri .

Başvuru belgeleri | Paketi (İndir) | GitHub'da Ek Örnekler

Bu nasıl yapılır kılavuzunda, konuşmayı tanımayı ve metne gerçek zamanlı olarak dökümünü almayı öğreneceksiniz.

Konuşma SDK'sı ve örnekleri yükleme

Azure-Samples/cognitive-services-speech-sdk deposu, iOS ve Mac için Objective-C dilinde yazılmış örnekler içerir. Her örneğe ilişkin yükleme yönergelerini görmek için bir bağlantı seçin:

Daha fazla bilgi için bkz . Objective-C için Konuşma SDK'sı başvurusu.

Özel uç nokta kullanma

Özel konuşma ile kendi verilerinizi karşıya yükleyebilir, özel bir modeli test edebilir ve eğitebilir, modeller arasındaki doğruluğu karşılaştırabilir ve modeli özel uç noktaya dağıtabilirsiniz. Aşağıdaki örnekte özel uç noktanın nasıl ayarlanacağı gösterilmektedir:

SPXSpeechConfiguration *speechConfig = [[SPXSpeechConfiguration alloc] initWithSubscription:"YourSubscriptionKey" region:"YourServiceRegion"];
speechConfig.endpointId = "YourEndpointId";
SPXSpeechRecognizer* speechRecognizer = [[SPXSpeechRecognizer alloc] init:speechConfig];

Kapsayıcı çalıştırma ve kullanma

Konuşma kapsayıcıları, Konuşma SDK'sı ve Konuşma CLI'sı aracılığıyla erişilen websocket tabanlı sorgu uç noktası API'leri sağlar. Varsayılan olarak, Konuşma SDK'sı ve Konuşma CLI'sı genel Konuşma hizmetini kullanır. Kapsayıcıyı kullanmak için başlatma yöntemini değiştirmeniz gerekir. Anahtar ve bölge yerine kapsayıcı ana bilgisayar URL'si kullanın.

Kapsayıcılar hakkında daha fazla bilgi için bkz . Docker ile Konuşma kapsayıcılarını yükleme ve çalıştırma makalesindeki Konak URL'leri .

Başvuru belgeleri | Paketi (İndir) | GitHub'da Ek Örnekler

Bu nasıl yapılır kılavuzunda, konuşmayı tanımayı ve metne gerçek zamanlı olarak dökümünü almayı öğreneceksiniz.

Konuşma SDK'sı ve örnekleri yükleme

Azure-Samples/cognitive-services-speech-sdk deposu, iOS ve Mac için Swift dilinde yazılmış örnekler içerir. Her örneğe ilişkin yükleme yönergelerini görmek için bir bağlantı seçin:

Daha fazla bilgi için bkz . Swift başvurusu için Konuşma SDK'sı.

Özel uç nokta kullanma

Özel konuşma ile kendi verilerinizi karşıya yükleyebilir, özel bir modeli test edebilir ve eğitebilir, modeller arasındaki doğruluğu karşılaştırabilir ve modeli özel uç noktaya dağıtabilirsiniz. Aşağıdaki örnekte özel uç noktanın nasıl ayarlanacağı gösterilmektedir:

let speechConfig = SPXSpeechConfiguration(subscription: "YourSubscriptionKey", region: "YourServiceRegion");
speechConfig.endpointId = "YourEndpointId";
let speechRecognizer = SPXSpeechRecognizer(speechConfiguration: speechConfig);

Kapsayıcı çalıştırma ve kullanma

Konuşma kapsayıcıları, Konuşma SDK'sı ve Konuşma CLI'sı aracılığıyla erişilen websocket tabanlı sorgu uç noktası API'leri sağlar. Varsayılan olarak, Konuşma SDK'sı ve Konuşma CLI'sı genel Konuşma hizmetini kullanır. Kapsayıcıyı kullanmak için başlatma yöntemini değiştirmeniz gerekir. Anahtar ve bölge yerine kapsayıcı ana bilgisayar URL'si kullanın.

Kapsayıcılar hakkında daha fazla bilgi için bkz . Docker ile Konuşma kapsayıcılarını yükleme ve çalıştırma makalesindeki Konak URL'leri .

GitHub'da Başvuru belgeleri | Paketi (PyPi) | Ek Örnekler

Bu nasıl yapılır kılavuzunda, konuşmayı tanımayı ve metne gerçek zamanlı olarak dökümünü almayı öğreneceksiniz.

Konuşma yapılandırması oluşturma

Konuşma SDK'sını kullanarak Konuşma hizmetini çağırmak için bir SpeechConfig örnek oluşturmanız gerekir. Bu sınıf konuşma anahtarınız ve ilişkili konum/bölge, uç nokta, konak veya yetkilendirme belirteci gibi aboneliğinizle ilgili bilgileri içerir.

  1. Konuşma anahtarınızı ve konumunuzu/bölgenizi kullanarak bir SpeechConfig örnek oluşturun.
  2. Azure portalında konuşma kaynağı oluşturma. Daha fazla bilgi için bkz . Çok hizmetli kaynak oluşturma.
speech_config = speechsdk.SpeechConfig(subscription="YourSpeechKey", region="YourSpeechRegion")

Birkaç farklı yolla başlatabilirsiniz SpeechConfig :

  • Uç nokta kullanın ve Konuşma hizmeti uç noktasını geçirin. Konuşma anahtarı veya yetkilendirme belirteci isteğe bağlıdır.
  • Bir konak kullanın ve bir konak adresi geçirin. Konuşma anahtarı veya yetkilendirme belirteci isteğe bağlıdır.
  • İlişkili bölge/konum ile yetkilendirme belirteci kullanın.

Not

Konuşma tanıma, konuşma sentezi, çeviri veya amaç tanıma gerçekleştirmenize bakılmaksızın, her zaman bir yapılandırma oluşturursunuz.

Mikrofondan konuşmayı tanıma

Cihaz mikrofonunuzu kullanarak konuşmayı tanımak için, geçirmeden AudioConfigbir SpeechRecognizer örnek oluşturun ve geçirinspeech_config:

import azure.cognitiveservices.speech as speechsdk

def from_mic():
    speech_config = speechsdk.SpeechConfig(subscription="YourSpeechKey", region="YourSpeechRegion")
    speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config)

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

from_mic()

Belirli bir ses giriş cihazı kullanmak istiyorsanız, içinde cihaz kimliğini AudioConfigbelirtmeniz ve bunu oluşturucunun SpeechRecognizeraudio_config parametresine geçirmeniz gerekir. Ses giriş cihazınızın cihaz kimliğini alma hakkında daha fazla bilgi için bkz . Konuşma SDK'sı ile ses giriş cihazı seçme

Dosyadan konuşma tanıma

Mikrofon kullanmak yerine ses dosyasından konuşmayı tanımak istiyorsanız bir AudioConfig örnek oluşturun ve parametresini filename kullanın:

import azure.cognitiveservices.speech as speechsdk

def from_file():
    speech_config = speechsdk.SpeechConfig(subscription="YourSpeechKey", region="YourSpeechRegion")
    audio_config = speechsdk.AudioConfig(filename="your_file_name.wav")
    speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)

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

from_file()

Hataları işleme

Önceki örnekler yalnızca özelliğinden result.text tanınan metni alır. Hataları ve diğer yanıtları işlemek için, sonucu işlemek için bazı kodlar yazmanız gerekir. Aşağıdaki kod özelliğini değerlendirir result.reason ve:

  • Tanıma sonucunu yazdırır: speechsdk.ResultReason.RecognizedSpeech.
  • Tanıma eşleşmesi yoksa kullanıcıyı bilgilendirir: speechsdk.ResultReason.NoMatch.
  • Bir hatayla karşılaşırsanız, şu hata iletisini yazdırır: 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))
        print("Did you set the speech resource key and region values?")

Sürekli tanımayı kullanma

Önceki örneklerde tek bir ifadeyi tanıyan tek çekimli tanıma kullanılır. Tek bir konuşmanın sonu, sonunda veya en fazla 15 saniyelik ses işlenene kadar sessizliği dinleyerek belirlenir.

Buna karşılık, tanımanın ne zaman durdurulacağını denetlemek istediğinizde sürekli tanıma kullanırsınız. Tanıma sonuçlarını almak için adresine EventSignal bağlanmanız gerekir. Tanımayı durdurmak için stop_continuous_recognition() veya stop_continuous_recognition() çağırmalısınız. Aşağıda, bir ses giriş dosyasında sürekli tanımanın nasıl gerçekleştirildiğini gösteren bir örnek verilmiştir.

Girişi tanımlayıp başlatarak SpeechRecognizerbaşlayın:

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

Ardından, konuşma tanıma durumunu yönetmek için bir değişken oluşturun. Değişkeni olarak False ayarlayın çünkü tanımanın başlangıcında tamamlanmadığını güvenle varsayabilirsiniz:

done = False

Şimdi, alındığında sürekli tanımayı evt durdurmak için bir geri çağırma oluşturun. Aşağıdaki noktaları göz önünde bulundurun:

def stop_cb(evt):
    print('CLOSING on {}'.format(evt))
    speech_recognizer.stop_continuous_recognition()
    nonlocal done
    done = True

Aşağıdaki kod örneği, geri çağırmaların öğesinden SpeechRecognizergönderilen olaylara nasıl bağlanacaklarını gösterir. Olaylar şunlardır:

  • recognizing: Ara tanıma sonuçları içeren olaylar için sinyal.
  • recognized: Başarılı bir tanıma girişimini gösteren son tanıma sonuçlarını içeren olaylar için sinyal.
  • session_started: Tanıma oturumunun (işlem) başladığını gösteren olaylar için sinyal.
  • session_stopped: Tanıma oturumunun (işlem) sonunu gösteren olaylar için sinyal.
  • canceled: İptal edilen tanıma sonuçlarını içeren olaylar için sinyal. Bu sonuçlar, doğrudan iptal isteğinin sonucu olarak iptal edilen bir tanıma girişimini gösterir. Alternatif olarak, bir aktarım veya protokol hatası olduğunu gösterirler.
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ıysa start_continuous_recognition() öğesini çağırabilirsiniz:

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

Kaynak dili değiştirme

Konuşma tanıma için sık kullanılan bir görev, giriş (veya kaynak) dilini belirtmektir. Aşağıdaki örnekte giriş dilinin Almanca olarak nasıl değiştireceği gösterilmektedir. Kodunuzda örneğinizi SpeechConfig bulun ve bu satırı doğrudan altına ekleyin:

speech_config.speech_recognition_language="de-DE"

speech_recognition_language bir dizeyi bağımsız değişken olarak alan bir parametredir. Daha fazla bilgi için desteklenen konuşma metin yerel ayarları listesine bakın.

Dil belirleme

Bir ses kaynağında dili tanımlamanız ve ardından metne dönüştürmeniz gerektiğinde Konuşmadan metne tanıma ile dil tanımlamayı kullanabilirsiniz.

Eksiksiz bir kod örneği için bkz . Dil belirleme.

Özel uç nokta kullanma

Özel konuşma ile kendi verilerinizi karşıya yükleyebilir, özel bir modeli test edebilir ve eğitebilir, modeller arasındaki doğruluğu karşılaştırabilir ve modeli özel uç noktaya dağıtabilirsiniz. Aşağıdaki örnekte özel uç noktanın nasıl ayarlanacağı gösterilmektedir.

speech_config = speechsdk.SpeechConfig(subscription="YourSubscriptionKey", region="YourServiceRegion")
speech_config.endpoint_id = "YourEndpointId"
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config)

Kapsayıcı çalıştırma ve kullanma

Konuşma kapsayıcıları, Konuşma SDK'sı ve Konuşma CLI'sı aracılığıyla erişilen websocket tabanlı sorgu uç noktası API'leri sağlar. Varsayılan olarak, Konuşma SDK'sı ve Konuşma CLI'sı genel Konuşma hizmetini kullanır. Kapsayıcıyı kullanmak için başlatma yöntemini değiştirmeniz gerekir. Anahtar ve bölge yerine kapsayıcı ana bilgisayar URL'si kullanın.

Kapsayıcılar hakkında daha fazla bilgi için bkz . Docker ile Konuşma kapsayıcılarını yükleme ve çalıştırma makalesindeki Konak URL'leri .

Konuşmayı metne dönüştürme REST API başvurusu | Kısa ses başvurusu için metin REST API'sine konuşma | GitHub'da Ek Örnekler

Bu nasıl yapılır kılavuzunda, konuşmayı tanımayı ve metne gerçek zamanlı olarak dökümünü almayı öğreneceksiniz.

Konuşmayı metne dönüştürme

Komut isteminde aşağıdaki komutu çalıştırın. Komutuna aşağıdaki değerleri ekleyin:

  • Konuşma hizmeti için abonelik anahtarınız.
  • Konuşma hizmeti bölgeniz.
  • Giriş ses dosyalarının yolu. Metin okuma özelliğini kullanarak ses dosyaları oluşturabilirsiniz.
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ğıdaki örnekte olduğu gibi JSON gövdesine sahip bir yanıt almanız gerekir:

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

Daha fazla bilgi için bkz . Konuşmayı metne dönüştürme REST API başvurusu.

Bu nasıl yapılır kılavuzunda, konuşmayı tanımayı ve metne gerçek zamanlı olarak dökümünü almayı öğreneceksiniz.

Mikrofondan konuşmayı tanıma

Bilgisayarınızın mikrofonu takın ve açın. Mikrofonu da kullanabilecek tüm uygulamaları kapatın. Bazı bilgisayarlarda yerleşik mikrofon bulunurken, bazıları için bluetooth cihazının yapılandırılması gerekir.

Artık mikrofonunuzdan konuşmayı tanımak için Konuşma CLI'sini çalıştırmaya hazırsınız. Komut satırından Konuşma CLI ikili dosyasını içeren dizine geçin. Sonra şu komutu çalıştırın:

spx recognize --microphone

Not

Konuşma CLI'sı varsayılan olarak İngilizce olur. Konuşmadan metin tablosuna farklı bir dil seçebilirsiniz. Örneğin, Almanca konuşmayı tanımak için ekleyin --source de-DE .

Mikrofona konuşun; sözcüklerinizin metne transkripsiyonunu gerçek zamanlı olarak görebilirsiniz. Konuşma CLI'si bir süre sessizlik süresinden sonra veya Ctrl+C'yi seçtiğinizde durur.

Dosyadan konuşma tanıma

Konuşma CLI'sı konuşmaları birçok dosya biçiminde ve doğal dilde tanıyabilir. Bu örnekte, İngilizce konuşma içeren herhangi bir .wav dosyasını (16 KHz veya 8 KHz, 16 bit ve mono PCM) kullanabilirsiniz. Hızlı bir örnek istiyorsanız, whatstheweatherlike.wav dosyasını indirin ve Konuşma CLI ikili dosyasıyla aynı dizine kopyalayın.

Ses dosyasında bulunan konuşmayı tanımak üzere Konuşma CLI'sini çalıştırmak için aşağıdaki komutu kullanın:

spx recognize --file whatstheweatherlike.wav

Not

Konuşma CLI'sı varsayılan olarak İngilizce olur. Konuşmadan metin tablosuna farklı bir dil seçebilirsiniz. Örneğin, Almanca konuşmayı tanımak için ekleyin --source de-DE .

Konuşma CLI'sı, ekrandaki konuşmanın metin dökümünü gösterir.

Kapsayıcı çalıştırma ve kullanma

Konuşma kapsayıcıları, Konuşma SDK'sı ve Konuşma CLI'sı aracılığıyla erişilen websocket tabanlı sorgu uç noktası API'leri sağlar. Varsayılan olarak, Konuşma SDK'sı ve Konuşma CLI'sı genel Konuşma hizmetini kullanır. Kapsayıcıyı kullanmak için başlatma yöntemini değiştirmeniz gerekir. Anahtar ve bölge yerine kapsayıcı ana bilgisayar URL'si kullanın.

Kapsayıcılar hakkında daha fazla bilgi için bkz . Docker ile Konuşma kapsayıcılarını yükleme ve çalıştırma makalesindeki Konak URL'leri .

Sonraki adımlar