Dela via


Så identifierar du tal

Referensdokumentation Paket (NuGet) | Ytterligare exempel på GitHub |

I den här instruktionsguiden lär du dig hur du använder Azure AI Speech för textkonvertering i realtid. Taligenkänning i realtid är perfekt för program som kräver omedelbar transkription, till exempel diktering, hjälp med callcenter och textning för livemöten.

Information om hur du konfigurerar miljön för ett exempelprogram finns i Snabbstart: Identifiera och konvertera tal till text.

Skapa en talkonfigurationsinstans

Om du vill anropa Speech-tjänsten med hjälp av Speech SDK måste du skapa en SpeechConfig instans. Den här klassen innehåller information om din prenumeration, till exempel din nyckel och tillhörande region, slutpunkt, värd eller auktoriseringstoken.

  1. Skapa en Speech-resurs i Azure Portal. Hämta resursnyckeln och regionen Speech.
  2. Skapa en SpeechConfig instans med hjälp av följande kod. Ersätt YourSpeechKey och YourSpeechRegion med din Speech-resursnyckel och -region.
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");
    }
}

Du kan initiera SpeechConfig på några andra sätt:

  • Använd en slutpunkt och skicka in en Slutpunkt för Speech-tjänsten. En nyckel eller auktoriseringstoken är valfri.
  • Använd en värd och skicka in en värdadress. En nyckel eller auktoriseringstoken är valfri.
  • Använd en auktoriseringstoken med den associerade regionen/platsen.

Kommentar

Oavsett om du utför taligenkänning, talsyntes, översättning eller avsiktsigenkänning skapar du alltid en konfiguration.

Identifiera tal från en mikrofon

Om du vill känna igen tal med hjälp av enhetens mikrofon skapar du en AudioConfig instans med hjälp FromDefaultMicrophoneInput() av metoden . Initiera sedan objektet SpeechRecognizer genom att skicka speechConfig och audioConfig.

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 speechRecognitionResult = await speechRecognizer.RecognizeOnceAsync();
        Console.WriteLine($"RECOGNIZED: Text={speechRecognitionResult.Text}");
    }

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

Om du vill använda en specifik ljudinmatningsenhet måste du ange enhets-ID:t i AudioConfig. Information om hur du hämtar enhets-ID :t finns i Välj en ljudinmatningsenhet med Speech SDK.

Identifiera tal från en fil

Om du vill känna igen tal från en ljudfil i stället för en mikrofon måste du fortfarande skapa en AudioConfig instans. Men du anropar FromDefaultMicrophoneInput()inte . Du anropar FromWavFileInput() och skickar filsökvägen:

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 speechRecognitionResult = await speechRecognizer.RecognizeOnceAsync();
        Console.WriteLine($"RECOGNIZED: Text={speechRecognitionResult.Text}");
    }

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

Identifiera tal från en minnesintern ström

I många användningsfall är det troligt att dina ljuddata kommer från Azure Blob Storage, eller att de annars redan finns i minnet som en byte[] instans eller en liknande rådatastruktur. I följande exempel används PushAudioInputStream för att identifiera tal, som i huvudsak är en abstrakt minnesström. Exempelkoden utför följande åtgärder:

  • Skriver rådata till PushAudioInputStream med hjälp Write() av funktionen, som accepterar en byte[] instans.
  • Läser en .wav fil med hjälp FileReader av i demonstrationssyfte. Om du redan har ljuddata i en byte[] instans kan du hoppa direkt till att skriva innehållet till indataströmmen.
  • Standardformatet är pcM-data (16-bitars, 16 kHz mono pulse-code modulation). Om du vill anpassa formatet kan du skicka ett AudioStreamFormat objekt till CreatePushStream() med hjälp av den statiska funktionen AudioStreamFormat.GetWaveFormatPCM(sampleRate, (byte)bitRate, (byte)channels).
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 speechRecognitionResult = await speechRecognizer.RecognizeOnceAsync();
        Console.WriteLine($"RECOGNIZED: Text={speechRecognitionResult.Text}");
    }

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

Att använda en push-ström som indata förutsätter att ljuddata är rå PCM och hoppar över alla rubriker. API:et fungerar fortfarande i vissa fall om huvudet inte hoppas över. För bästa resultat bör du överväga att implementera logik för att läsa av rubrikerna så att den byte[] börjar i början av ljuddata.

Hantera fel

I föregående exempel hämtas endast den identifierade texten från egenskapen speechRecognitionResult.Text . Om du vill hantera fel och andra svar måste du skriva kod för att hantera resultatet. Följande kod utvärderar egenskapen speechRecognitionResult.Reason och:

  • Skriver ut igenkänningsresultatet: ResultReason.RecognizedSpeech.
  • Om det inte finns någon igenkänningsmatchning informerar den användaren: ResultReason.NoMatch.
  • Om ett fel påträffas skriver det ut felmeddelandet: ResultReason.Canceled.
switch (speechRecognitionResult.Reason)
{
    case ResultReason.RecognizedSpeech:
        Console.WriteLine($"RECOGNIZED: Text={speechRecognitionResult.Text}");
        break;
    case ResultReason.NoMatch:
        Console.WriteLine($"NOMATCH: Speech could not be recognized.");
        break;
    case ResultReason.Canceled:
        var cancellation = CancellationDetails.FromResult(speechRecognitionResult);
        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;
}

Använda kontinuerlig igenkänning

I föregående exempel används enkel igenkänning, som identifierar ett enda yttrande. Slutet på ett enskilt yttrande bestäms genom att lyssna efter tystnad i slutet eller tills högst 15 sekunders ljud bearbetas.

Däremot använder du kontinuerlig igenkänning när du vill styra när du ska sluta känna igen. Det kräver att du prenumererar på Recognizinghändelserna , Recognizedoch Canceled för att få igenkänningsresultatet. Om du vill stoppa igenkänningen måste du anropa StopContinuousRecognitionAsync. Här är ett exempel på hur kontinuerlig igenkänning utförs på en ljudinmatningsfil.

Börja med att definiera indata och initiera SpeechRecognizer:

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

Skapa sedan en TaskCompletionSource<int> instans för att hantera tillståndet för taligenkänning:

var stopRecognition = new TaskCompletionSource<int>();

Prenumerera sedan på de händelser som SpeechRecognizer skickar:

  • Recognizing: Signal för händelser som innehåller mellanliggande igenkänningsresultat.
  • Recognized: Signal för händelser som innehåller slutigenkänningsresultat, vilket indikerar ett lyckat igenkänningsförsök.
  • SessionStopped: Signal för händelser som anger slutet på en igenkänningssession (åtgärd).
  • Canceled: Signal för händelser som innehåller avbrutna igenkänningsresultat. Dessa resultat indikerar ett igenkänningsförsök som avbröts till följd av en direkt avbokningsbegäran. Alternativt anger de ett transport- eller protokollfel.
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);
};

När allt har konfigurerats anropar du StartContinuousRecognitionAsync för att börja känna igen:

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();

Ändra källspråket

En vanlig uppgift för taligenkänning är att ange indataspråket (eller källspråket). I följande exempel visas hur du ändrar indataspråket till italienska. Leta upp din SpeechConfig instans i koden och lägg till den här raden direkt under den:

speechConfig.SpeechRecognitionLanguage = "it-IT";

Egenskapen SpeechRecognitionLanguage förväntar sig en språkspråksformatsträng. En lista över språk och röststöd finns i Språk och röststöd för Speech-tjänsten.

Språkidentifiering

Du kan använda språkidentifiering med tal till textigenkänning när du behöver identifiera språket i en ljudkälla och sedan transkribera det till text.

Ett fullständigt kodexempel finns i Språkidentifiering.

Använda en anpassad slutpunkt

Med anpassat tal kan du ladda upp dina egna data, testa och träna en anpassad modell, jämföra noggrannhet mellan modeller och distribuera en modell till en anpassad slutpunkt. I följande exempel visas hur du anger en anpassad slutpunkt.

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

Köra och använda en container

Talcontainrar tillhandahåller websocketbaserade frågeslutpunkts-API:er som nås via Speech SDK och Speech CLI. Som standard använder Speech SDK och Speech CLI den offentliga Speech-tjänsten. Om du vill använda containern måste du ändra initieringsmetoden. Använd en containervärd-URL i stället för nyckel och region.

Mer information om containrar finns i Värd-URL:er i Installera och köra Speech-containrar med Docker.

Ändra hur tystnad hanteras

Om en användare talar snabbare eller långsammare än vanligt kanske standardbeteendena för icke-texttystnad i indataljud inte resulterar i det du förväntar dig. Vanliga problem med tystnadshantering är:

  • Snabbtal som kedjar samman många meningar till ett enda igenkänningsresultat, i stället för att dela meningar i enskilda resultat.
  • Långsamt tal som separerar delar av en enda mening i flera resultat.
  • En enstaka igenkänning som slutar för snabbt i väntan på att talet ska börja.

Dessa problem kan åtgärdas genom att ange en av två timeout-egenskaper på den SpeechConfig instans som används för att skapa en SpeechRecognizer:

  • Tidsgränsen för segmenteringstystnad justerar hur mycket icke-ljud som tillåts inom en fras som för närvarande talas innan den frasen anses vara "klar".
    • Högre värden ger vanligtvis längre resultat och tillåter längre pauser från talaren i en fras, men gör att resultatet tar längre tid att komma fram. De kan också kombinera separata fraser i ett enda resultat när de anges för högt.
    • Lägre värden gör vanligtvis resultaten kortare och säkerställer mer snabba och frekventa brytningar mellan fraser, men kan också leda till att enskilda fraser separeras i flera resultat när de anges för lågt.
    • Den här tidsgränsen kan anges till heltalsvärden mellan 100 och 5 000, i millisekunder, med 500 som standard.
  • Den inledande tidsgränsen för tystnad justerar hur mycket ljud utan ljud som tillåts innan en fras innan igenkänningsförsöket slutar med ett resultat av typen "ingen matchning".
    • Högre värden ger talarna mer tid att reagera och börja tala, men kan också leda till långsam svarstid när ingenting talas.
    • Lägre värden säkerställer en uppmaning om "ingen matchning" för snabbare användarupplevelse och mer kontrollerad ljudhantering, men kan stänga av en högtalare för snabbt när den är för låg.
    • Eftersom kontinuerlig igenkänning genererar många resultat avgör det här värdet hur ofta "ingen matchning"-resultat anländer, men påverkar annars inte innehållet i igenkänningsresultatet.
    • Den här tidsgränsen kan ställas in på valfritt icke-negativt heltalsvärde, i millisekunder eller inställt på 0 för att inaktivera det helt. 5000 är en typisk standard för enkel igenkänning medan 15000 är en typisk standard för kontinuerlig igenkänning.

Eftersom det finns kompromisser när du ändrar dessa tidsgränser bör du bara ändra inställningarna när du har problem med tyst hantering. Standardvärden hanterar optimalt de flesta talade ljud och endast ovanliga scenarier bör stöta på problem.

Exempel: Användare som talar ett serienummer som "ABC-123-4567" kan pausa mellan teckengrupper tillräckligt länge för att serienumret ska delas upp i flera resultat. I det här fallet kan du prova ett högre värde som 2 000 millisekunder för tidsgränsen för segmenteringstystnad:

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

Exempel: En inspelad presentatörs tal kan vara tillräckligt snabbt för att flera meningar i rad ska kombineras, med stora igenkänningsresultat som bara kommer en eller två gånger per minut. I det här fallet anger du tidsgränsen för segmenteringstystnad till ett lägre värde som 300 ms:

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

Exempel: En enstaka igenkänning som ber en talare att hitta och läsa ett serienummer slutar för snabbt medan talet hittas. I det här fallet kan du prova en längre tidsgräns för inledande tystnad som 10 000 ms:

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

Semantiksegmentering

Semantisk segmentering är en segmenteringsstrategi för taligenkänning som är utformad för att minimera problem som är kopplade till tystnadsbaserad segmentering:

  • Undersegmentering: När användarna talar länge utan pauser kan de se en lång sekvens med text utan pauser ("textvägg"), vilket allvarligt försämrar läsbarheten.
  • Översegmentering: När en användare pausar under en kort tid kan mekanismen för ljudidentifiering segmentera felaktigt.

I stället för att förlita sig på tidsgränser för tystnad returnerar semantiska segmenteringssegment och slutliga resultat när den identifierar meningsslutande skiljetecken (till exempel "." eller "?"). Detta förbättrar användarupplevelsen med segment med högre kvalitet, semantiskt kompletta segment och förhindrar långa mellanliggande resultat.

Om du vill använda semantisk segmentering måste du ange följande egenskap på den SpeechConfig instans som används för att skapa en SpeechRecognizer:

speechConfig.SetProperty(PropertyId.Speech_SegmentationStrategy, "Semantic");

Några av begränsningarna för semantisk segmentering är följande:

  • Du behöver Speech SDK version 1.41 eller senare för att använda semantisk segmentering.
  • Semantisk segmentering är endast avsedd för kontinuerlig igenkänning. Detta omfattar scenarier som transkription och bildtexter. Den bör inte användas i läget för enkel igenkänning och diktering.
  • Semantisk segmentering är inte tillgängligt för alla språk och nationella inställningar. För närvarande är semantisk segmentering endast tillgängligt för engelska (en) nationella inställningar som en-US, en-GB, en-IN och en-AU.
  • Semantisk segmentering stöder ännu inte konfidenspoäng och NBest-listor. Därför rekommenderar vi inte semantisk segmentering om du använder konfidenspoäng eller NBest-listor.

Referensdokumentation Paket (NuGet) | Ytterligare exempel på GitHub |

I den här instruktionsguiden lär du dig hur du använder Azure AI Speech för textkonvertering i realtid. Taligenkänning i realtid är perfekt för program som kräver omedelbar transkription, till exempel diktering, hjälp med callcenter och textning för livemöten.

Information om hur du konfigurerar miljön för ett exempelprogram finns i Snabbstart: Identifiera och konvertera tal till text.

Skapa en talkonfigurationsinstans

Om du vill anropa Speech-tjänsten med hjälp av Speech SDK måste du skapa en SpeechConfig instans. Den här klassen innehåller information om din prenumeration, till exempel din nyckel och tillhörande region, slutpunkt, värd eller auktoriseringstoken.

  1. Skapa en Speech-resurs i Azure Portal. Hämta resursnyckeln och regionen Speech.
  2. Skapa en SpeechConfig instans med hjälp av följande kod. Ersätt YourSpeechKey och YourSpeechRegion med din Speech-resursnyckel och -region.
using namespace std;
using namespace Microsoft::CognitiveServices::Speech;

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

Du kan initiera SpeechConfig på några andra sätt:

  • Använd en slutpunkt och skicka in en Slutpunkt för Speech-tjänsten. En nyckel eller auktoriseringstoken är valfri.
  • Använd en värd och skicka in en värdadress. En nyckel eller auktoriseringstoken är valfri.
  • Använd en auktoriseringstoken med den associerade regionen/platsen.

Kommentar

Oavsett om du utför taligenkänning, talsyntes, översättning eller avsiktsigenkänning skapar du alltid en konfiguration.

Identifiera tal från en mikrofon

Om du vill känna igen tal med hjälp av enhetens mikrofon skapar du en AudioConfig instans med hjälp FromDefaultMicrophoneInput() av medlemsfunktionen. Initiera sedan objektetSpeechRecognizer genom att skicka audioConfig och config.

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;

Om du vill använda en specifik ljudinmatningsenhet måste du ange enhets-ID:t i AudioConfig. Information om hur du hämtar enhets-ID :t finns i Välj en ljudinmatningsenhet med Speech SDK.

Identifiera tal från en fil

Om du vill känna igen tal från en ljudfil i stället för att använda en mikrofon måste du fortfarande skapa en AudioConfig instans. Men du anropar FromDefaultMicrophoneInput()inte . Du anropar FromWavFileInput() och skickar filsökvägen:

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;

Identifiera tal med hjälp av klassen Recognizer

Klassen Recognizer för Speech SDK för C++ visar några metoder som du kan använda för taligenkänning.

Enkel igenkänning

Enstaka igenkänning känner asynkront igen ett enda yttrande. Slutet på ett enskilt yttrande bestäms genom att lyssna efter tystnad i slutet eller tills högst 15 sekunders ljud bearbetas. Här är ett exempel på asynkron enkel igenkänning via RecognizeOnceAsync:

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

Du måste skriva kod för att hantera resultatet. Det här exemplet utvärderar result->Reason och:

  • Skriver ut igenkänningsresultatet: ResultReason::RecognizedSpeech.
  • Om det inte finns någon igenkänningsmatchning informerar den användaren: ResultReason::NoMatch.
  • Om ett fel påträffas skriver det ut felmeddelandet: 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;
}

Kontinuerlig igenkänning

Kontinuerlig igenkänning är lite mer involverat än enkel igenkänning. Det kräver att du prenumererar på Recognizinghändelserna , Recognizedoch Canceled för att få igenkänningsresultatet. Om du vill stoppa igenkänningen måste du anropa StopContinuousRecognitionAsync. Här är ett exempel på kontinuerlig igenkänning som utförs på en ljudinmatningsfil.

Börja med att definiera indata och initiera SpeechRecognizer:

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

Skapa sedan en variabel för att hantera taligenkänningens tillstånd. Deklarera promise<void> eftersom du i början av igenkänningen säkert kan anta att den inte är klar:

promise<void> recognitionEnd;

Prenumerera sedan på de händelser som SpeechRecognizer skickar:

  • Recognizing: Signal för händelser som innehåller mellanliggande igenkänningsresultat.
  • Recognized: Signal för händelser som innehåller slutigenkänningsresultat, vilket indikerar ett lyckat igenkänningsförsök.
  • SessionStopped: Signal för händelser som anger slutet på en igenkänningssession (åtgärd).
  • Canceled: Signal för händelser som innehåller avbrutna igenkänningsresultat. Dessa resultat indikerar ett igenkänningsförsök som avbröts till följd av en direkt annulleringsbegäran. Alternativt anger de ett transport- eller protokollfel.
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.
    });

När allt har konfigurerats anropar du StartContinuousRecognitionAsync för att börja känna igen:

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

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

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

Ändra källspråket

En vanlig uppgift för taligenkänning är att ange indataspråket (eller källspråket). I följande exempel visas hur du ändrar indataspråket till tyska. Leta upp din SpeechConfig instans i koden och lägg till den här raden direkt under den:

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

SetSpeechRecognitionLanguage är en parameter som tar en sträng som argument. En lista över språk och röststöd finns i Språk och röststöd för Speech-tjänsten.

Språkidentifiering

Du kan använda språkidentifiering med tal till textigenkänning när du behöver identifiera språket i en ljudkälla och sedan transkribera det till text.

Ett fullständigt kodexempel finns i Språkidentifiering.

Använda en anpassad slutpunkt

Med anpassat tal kan du ladda upp dina egna data, testa och träna en anpassad modell, jämföra noggrannhet mellan modeller och distribuera en modell till en anpassad slutpunkt. I följande exempel visas hur du anger en anpassad slutpunkt.

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

Köra och använda en container

Talcontainrar tillhandahåller websocketbaserade frågeslutpunkts-API:er som nås via Speech SDK och Speech CLI. Som standard använder Speech SDK och Speech CLI den offentliga Speech-tjänsten. Om du vill använda containern måste du ändra initieringsmetoden. Använd en containervärd-URL i stället för nyckel och region.

Mer information om containrar finns i Värd-URL:er i Installera och köra Speech-containrar med Docker.

Semantiksegmentering

Semantisk segmentering är en segmenteringsstrategi för taligenkänning som är utformad för att minimera problem som är kopplade till tystnadsbaserad segmentering:

  • Undersegmentering: När användarna talar länge utan pauser kan de se en lång sekvens med text utan pauser ("textvägg"), vilket allvarligt försämrar läsbarheten.
  • Översegmentering: När en användare pausar under en kort tid kan mekanismen för ljudidentifiering segmentera felaktigt.

I stället för att förlita sig på tidsgränser för tystnad returnerar semantiska segmenteringssegment och slutliga resultat när den identifierar meningsslutande skiljetecken (till exempel "." eller "?"). Detta förbättrar användarupplevelsen med segment med högre kvalitet, semantiskt kompletta segment och förhindrar långa mellanliggande resultat.

Om du vill använda semantisk segmentering måste du ange följande egenskap på den SpeechConfig instans som används för att skapa en SpeechRecognizer:

speechConfig->SetProperty(PropertyId::Speech_SegmentationStrategy, "Semantic");

Några av begränsningarna för semantisk segmentering är följande:

  • Du behöver Speech SDK version 1.41 eller senare för att använda semantisk segmentering.
  • Semantisk segmentering är endast avsedd för kontinuerlig igenkänning. Detta omfattar scenarier som transkription och bildtexter. Den bör inte användas i läget för enkel igenkänning och diktering.
  • Semantisk segmentering är inte tillgängligt för alla språk och nationella inställningar. För närvarande är semantisk segmentering endast tillgängligt för engelska (en) nationella inställningar som en-US, en-GB, en-IN och en-AU.
  • Semantisk segmentering stöder ännu inte konfidenspoäng och NBest-listor. Därför rekommenderar vi inte semantisk segmentering om du använder konfidenspoäng eller NBest-listor.

Referensdokumentation Paket (Go) | Ytterligare exempel på GitHub |

I den här instruktionsguiden lär du dig hur du använder Azure AI Speech för textkonvertering i realtid. Taligenkänning i realtid är perfekt för program som kräver omedelbar transkription, till exempel diktering, hjälp med callcenter och textning för livemöten.

Information om hur du konfigurerar miljön för ett exempelprogram finns i Snabbstart: Identifiera och konvertera tal till text.

Identifiera tal till text från en mikrofon

  1. Skapa en Speech-resurs i Azure Portal. Hämta resursnyckeln och regionen Speech.
  2. Använd följande kodexempel för att köra taligenkänning från standardenhetens mikrofon. Ersätt YourSpeechKey och YourSpeechRegion med din Speech-resursnyckel och -region. När du kör skriptet startas en igenkänningssession på standardmikrofonen och utdatatexten:
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')
}

Kör följande kommandon för att skapa en go.mod-fil som länkar till komponenter som finns på GitHub:

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

Skapa och kör nu koden:

go build
go run quickstart

Detaljerad information finns i referensinnehållet SpeechConfig för klassen och SpeechRecognizer klassen.

Identifiera tal till text från en ljudfil

Använd följande exempel för att köra taligenkänning från en ljudfil. Ersätt YourSpeechKey och YourSpeechRegion med din Speech-resursnyckel och -region. Ersätt dessutom variabeln file med en sökväg till en .wav fil. När du kör skriptet identifieras tal från filen och textresultatet matas ut:

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

Kör följande kommandon för att skapa en go.mod-fil som länkar till komponenter som finns på GitHub:

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

Skapa och kör nu koden:

go build
go run quickstart

Detaljerad information finns i referensinnehållet SpeechConfig för klassen och SpeechRecognizer klassen.

Köra och använda en container

Talcontainrar tillhandahåller websocketbaserade frågeslutpunkts-API:er som nås via Speech SDK och Speech CLI. Som standard använder Speech SDK och Speech CLI den offentliga Speech-tjänsten. Om du vill använda containern måste du ändra initieringsmetoden. Använd en containervärd-URL i stället för nyckel och region.

Mer information om containrar finns i Värd-URL:er i Installera och köra Speech-containrar med Docker.

Referensdokumentation | Ytterligare exempel på GitHub

I den här instruktionsguiden lär du dig hur du använder Azure AI Speech för textkonvertering i realtid. Taligenkänning i realtid är perfekt för program som kräver omedelbar transkription, till exempel diktering, hjälp med callcenter och textning för livemöten.

Information om hur du konfigurerar miljön för ett exempelprogram finns i Snabbstart: Identifiera och konvertera tal till text.

Skapa en talkonfigurationsinstans

Om du vill anropa Speech-tjänsten med hjälp av Speech SDK måste du skapa en SpeechConfig-instans . Den här klassen innehåller information om din prenumeration, till exempel din nyckel och tillhörande region, slutpunkt, värd eller auktoriseringstoken.

  1. Skapa en Speech-resurs i Azure Portal. Hämta resursnyckeln och regionen Speech.
  2. Skapa en SpeechConfig instans med hjälp av din Speech-nyckel och -region.
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-speech-key>", "<paste-your-region>");
    }
}

Du kan initiera SpeechConfig på några andra sätt:

  • Använd en slutpunkt och skicka in en Slutpunkt för Speech-tjänsten. En nyckel eller auktoriseringstoken är valfri.
  • Använd en värd och skicka in en värdadress. En nyckel eller auktoriseringstoken är valfri.
  • Använd en auktoriseringstoken med den associerade regionen/platsen.

Kommentar

Oavsett om du utför taligenkänning, talsyntes, översättning eller avsiktsigenkänning skapar du alltid en konfiguration.

Identifiera tal från en mikrofon

Om du vill känna igen tal med hjälp av enhetens mikrofon skapar du en AudioConfig instans med hjälp fromDefaultMicrophoneInput() av metoden . Initiera sedan objektet SpeechRecognizer genom att skicka audioConfig och config.

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-speech-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 speechRecognitionResult = task.get();
        System.out.println("RECOGNIZED: Text=" + speechRecognitionResult.getText());
    }
}

Om du vill använda en specifik ljudinmatningsenhet måste du ange enhets-ID:t i AudioConfig. Information om hur du hämtar enhets-ID :t finns i Välj en ljudinmatningsenhet med Speech SDK.

Identifiera tal från en fil

Om du vill känna igen tal från en ljudfil i stället för att använda en mikrofon måste du fortfarande skapa en AudioConfig instans. Men du anropar FromDefaultMicrophoneInput()inte . Du anropar fromWavFileInput() och skickar filsökvägen:

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-speech-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 speechRecognitionResult = task.get();
        System.out.println("RECOGNIZED: Text=" + speechRecognitionResult.getText());
    }
}

Hantera fel

I föregående exempel hämtas endast den identifierade texten med hjälp speechRecognitionResult.getText()av . Om du vill hantera fel och andra svar måste du skriva kod för att hantera resultatet. I följande exempel utvärderas speechRecognitionResult.getReason() och:

  • Skriver ut igenkänningsresultatet: ResultReason.RecognizedSpeech.
  • Om det inte finns någon igenkänningsmatchning informerar den användaren: ResultReason.NoMatch.
  • Om ett fel påträffas skriver det ut felmeddelandet: ResultReason.Canceled.
switch (speechRecognitionResult.getReason()) {
    case ResultReason.RecognizedSpeech:
        System.out.println("We recognized: " + speechRecognitionResult.getText());
        exitCode = 0;
        break;
    case ResultReason.NoMatch:
        System.out.println("NOMATCH: Speech could not be recognized.");
        break;
    case ResultReason.Canceled: {
            CancellationDetails cancellation = CancellationDetails.fromResult(speechRecognitionResult);
            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;
}

Använda kontinuerlig igenkänning

I föregående exempel används enkel igenkänning, som identifierar ett enda yttrande. Slutet på ett enskilt yttrande bestäms genom att lyssna efter tystnad i slutet eller tills högst 15 sekunders ljud bearbetas.

Däremot använder du kontinuerlig igenkänning när du vill styra när du ska sluta känna igen. Det kräver att du prenumererar på recognizinghändelserna , recognizedoch canceled för att få igenkänningsresultatet. Om du vill stoppa igenkänningen måste du anropa stopContinuousRecognitionAsync. Här är ett exempel på hur du kan utföra kontinuerlig igenkänning på en ljudindatafil.

Börja med att definiera indata och initiera SpeechRecognizer:

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

Skapa sedan en variabel för att hantera taligenkänningens tillstånd. Deklarera en Semaphore instans i klassomfånget:

private static Semaphore stopTranslationWithFileSemaphore;

Prenumerera sedan på de händelser som SpeechRecognizer skickar:

  • recognizing: Signal för händelser som innehåller mellanliggande igenkänningsresultat.
  • recognized: Signal för händelser som innehåller slutigenkänningsresultat, vilket indikerar ett lyckat igenkänningsförsök.
  • sessionStopped: Signal för händelser som anger slutet på en igenkänningssession (åtgärd).
  • canceled: Signal för händelser som innehåller avbrutna igenkänningsresultat. Dessa resultat indikerar ett igenkänningsförsök som avbröts till följd av en direkt avbokningsbegäran. Alternativt anger de ett transport- eller protokollfel.
// 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();
});

När allt har konfigurerats anropar du startContinuousRecognitionAsync för att börja känna igen:

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

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

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

Ändra källspråket

En vanlig uppgift för taligenkänning är att ange indataspråket (eller källspråket). I följande exempel visas hur du ändrar indataspråket till franska. Leta reda på din SpeechConfig instans i koden och lägg till den här raden direkt under den:

config.setSpeechRecognitionLanguage("fr-FR");

setSpeechRecognitionLanguage är en parameter som tar en sträng som argument. Se listan över tal som stöds för textspråk.

Språkidentifiering

Du kan använda språkidentifiering med tal till textigenkänning när du behöver identifiera språket i en ljudkälla och sedan transkribera det till text.

Ett fullständigt kodexempel finns i Språkidentifiering.

Använda en anpassad slutpunkt

Med anpassat tal kan du ladda upp dina egna data, testa och träna en anpassad modell, jämföra noggrannhet mellan modeller och distribuera en modell till en anpassad slutpunkt. I följande exempel visas hur du anger en anpassad slutpunkt:

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

Köra och använda en container

Talcontainrar tillhandahåller websocketbaserade frågeslutpunkts-API:er som nås via Speech SDK och Speech CLI. Som standard använder Speech SDK och Speech CLI den offentliga Speech-tjänsten. Om du vill använda containern måste du ändra initieringsmetoden. Använd en containervärd-URL i stället för nyckel och region.

Mer information om containrar finns i Värd-URL:er i Installera och köra Speech-containrar med Docker.

Semantiksegmentering

Semantisk segmentering är en segmenteringsstrategi för taligenkänning som är utformad för att minimera problem som är kopplade till tystnadsbaserad segmentering:

  • Undersegmentering: När användarna talar länge utan pauser kan de se en lång sekvens med text utan pauser ("textvägg"), vilket allvarligt försämrar läsbarheten.
  • Översegmentering: När en användare pausar under en kort tid kan mekanismen för ljudidentifiering segmentera felaktigt.

I stället för att förlita sig på tidsgränser för tystnad returnerar semantiska segmenteringssegment och slutliga resultat när den identifierar meningsslutande skiljetecken (till exempel "." eller "?"). Detta förbättrar användarupplevelsen med segment med högre kvalitet, semantiskt kompletta segment och förhindrar långa mellanliggande resultat.

Om du vill använda semantisk segmentering måste du ange följande egenskap på den SpeechConfig instans som används för att skapa en SpeechRecognizer:

speechConfig.SetProperty(PropertyId.Speech_SegmentationStrategy, "Semantic");

Några av begränsningarna för semantisk segmentering är följande:

  • Du behöver Speech SDK version 1.41 eller senare för att använda semantisk segmentering.
  • Semantisk segmentering är endast avsedd för kontinuerlig igenkänning. Detta omfattar scenarier som transkription och bildtexter. Den bör inte användas i läget för enkel igenkänning och diktering.
  • Semantisk segmentering är inte tillgängligt för alla språk och nationella inställningar. För närvarande är semantisk segmentering endast tillgängligt för engelska (en) nationella inställningar som en-US, en-GB, en-IN och en-AU.
  • Semantisk segmentering stöder ännu inte konfidenspoäng och NBest-listor. Därför rekommenderar vi inte semantisk segmentering om du använder konfidenspoäng eller NBest-listor.

Referensdokumentation Paket (npm) | Ytterligare exempel på GitHub-bibliotekets källkod | |

I den här instruktionsguiden lär du dig hur du använder Azure AI Speech för textkonvertering i realtid. Taligenkänning i realtid är perfekt för program som kräver omedelbar transkription, till exempel diktering, hjälp med callcenter och textning för livemöten.

Information om hur du konfigurerar miljön för ett exempelprogram finns i Snabbstart: Identifiera och konvertera tal till text.

Skapa en talkonfigurationsinstans

Om du vill anropa Speech-tjänsten med hjälp av Speech SDK måste du skapa en SpeechConfig instans. Den här klassen innehåller information om din prenumeration, till exempel din nyckel och tillhörande region, slutpunkt, värd eller auktoriseringstoken.

  1. Skapa en Speech-resurs i Azure Portal. Hämta resursnyckeln och regionen Speech.
  2. Skapa en SpeechConfig instans med hjälp av följande kod. Ersätt YourSpeechKey och YourSpeechRegion med din Speech-resursnyckel och -region.
const speechConfig = sdk.SpeechConfig.fromSubscription("YourSpeechKey", "YourSpeechRegion");

Du kan initiera SpeechConfig på några andra sätt:

  • Använd en slutpunkt och skicka in en Slutpunkt för Speech-tjänsten. En nyckel eller auktoriseringstoken är valfri.
  • Använd en värd och skicka in en värdadress. En nyckel eller auktoriseringstoken är valfri.
  • Använd en auktoriseringstoken med den associerade regionen/platsen.

Kommentar

Oavsett om du utför taligenkänning, talsyntes, översättning eller avsiktsigenkänning skapar du alltid en konfiguration.

Identifiera tal från en mikrofon

Det går inte att känna igen tal från en mikrofon i Node.js. Det stöds endast i en webbläsarbaserad JavaScript-miljö. Mer information finns i React-exemplet och implementeringen av tal till text från en mikrofon på GitHub. React-exemplet visar designmönster för utbyte och hantering av autentiseringstoken. Den visar också inspelning av ljud från en mikrofon eller fil för tal till textkonverteringar.

Kommentar

Om du vill använda en specifik ljudinmatningsenhet måste du ange enhets-ID:t i AudioConfig. Information om hur du hämtar enhets-ID :t finns i Välj en ljudinmatningsenhet med Speech SDK.

Identifiera tal från en fil

Om du vill känna igen tal från en ljudfil skapar du en AudioConfig instans med hjälp fromWavFileInput() av metoden som accepterar ett Buffer objekt. SpeechRecognizer Initiera sedan genom att skicka audioConfig och speechConfig.

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();

Identifiera tal från en minnesintern ström

I många användningsfall kommer dina ljuddata troligen från Azure Blob Storage. Eller så finns det redan i minnet som en ArrayBuffer eller liknande rådatastruktur. Följande kod:

  • Skapar en push-ström med hjälp createPushStream()av .
  • Läser en .wav fil med hjälp fs.createReadStream av i demonstrationssyfte. Om du redan har ljuddata i ArrayBufferkan du hoppa direkt till att skriva innehållet till indataströmmen.
  • Skapar en ljudkonfiguration med hjälp av push-strömmen.
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();

Om du använder en push-ström som indata förutsätter vi att ljuddata är pcm-data (raw pulse-code modulation) som hoppar över alla rubriker. API:et fungerar fortfarande i vissa fall om huvudet inte hoppas över. För bästa resultat bör du överväga att implementera logik för att läsa av rubrikerna så att den fs börjar i början av ljuddata.

Hantera fel

I föregående exempel hämtas endast den identifierade texten från egenskapen result.text . Om du vill hantera fel och andra svar måste du skriva kod för att hantera resultatet. Följande kod utvärderar egenskapen result.reason och:

  • Skriver ut igenkänningsresultatet: ResultReason.RecognizedSpeech.
  • Om det inte finns någon igenkänningsmatchning informerar den användaren: ResultReason.NoMatch.
  • Om ett fel påträffas skriver det ut felmeddelandet: 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;
    }

Använda kontinuerlig igenkänning

I föregående exempel används enkel igenkänning, som identifierar ett enda yttrande. Slutet på ett enskilt yttrande bestäms genom att lyssna efter tystnad i slutet eller tills högst 15 sekunders ljud bearbetas.

Däremot kan du använda kontinuerlig igenkänning när du vill styra när du ska sluta känna igen. Det kräver att du prenumererar på Recognizinghändelserna , Recognizedoch Canceled för att få igenkänningsresultatet. För att stoppa igenkänningen måste du anropa [stopContinuousRecognitionAsync] (/javascript/api/microsoft-cognitiveservices-speech-sdk/speechrecognizer#microsoft-cognitiveservices-speech-sdk-speechrecognizer-stopcontinuousrecognitionasync). Här är ett exempel på hur kontinuerlig igenkänning utförs på en ljudinmatningsfil.

Börja med att definiera indata och initiera SpeechRecognizer:

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

Prenumerera sedan på de händelser som skickas från SpeechRecognizer:

  • recognizing: Signal för händelser som innehåller mellanliggande igenkänningsresultat.
  • recognized: Signal för händelser som innehåller slutigenkänningsresultat, vilket indikerar ett lyckat igenkänningsförsök.
  • sessionStopped: Signal för händelser som anger slutet på en igenkänningssession (åtgärd).
  • canceled: Signal för händelser som innehåller avbrutna igenkänningsresultat. Dessa resultat indikerar ett igenkänningsförsök som avbröts till följd av en direkt avbokningsbegäran. Alternativt anger de ett transport- eller protokollfel.
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();
};

När allt har konfigurerats anropar du [startContinuousRecognitionAsync] (/javascript/api/microsoft-cognitiveservices-speech-sdk/speechrecognizer#microsoft-cognitiveservices-speech-sdk-speechrecognizer-startkeywordrecognitionasync) för att börja känna igen:

speechRecognizer.startContinuousRecognitionAsync();

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

Ändra källspråket

En vanlig uppgift för taligenkänning är att ange indataspråket (eller källspråket). I följande exempel visas hur du ändrar indataspråket till italienska. Leta upp din SpeechConfig instans i koden och lägg till den här raden direkt under den:

speechConfig.speechRecognitionLanguage = "it-IT";

Egenskapen speechRecognitionLanguage förväntar sig en språkspråksformatsträng. En lista över språk och röststöd finns i Språk och röststöd för Speech-tjänsten.

Språkidentifiering

Du kan använda språkidentifiering med tal till textigenkänning när du behöver identifiera språket i en ljudkälla och sedan transkribera det till text.

Ett fullständigt kodexempel finns i Språkidentifiering.

Använda en anpassad slutpunkt

Med anpassat tal kan du ladda upp dina egna data, testa och träna en anpassad modell, jämföra noggrannhet mellan modeller och distribuera en modell till en anpassad slutpunkt. I följande exempel visas hur du anger en anpassad slutpunkt.

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

Köra och använda en container

Talcontainrar tillhandahåller websocketbaserade frågeslutpunkts-API:er som nås via Speech SDK och Speech CLI. Som standard använder Speech SDK och Speech CLI den offentliga Speech-tjänsten. Om du vill använda containern måste du ändra initieringsmetoden. Använd en containervärd-URL i stället för nyckel och region.

Mer information om containrar finns i Värd-URL:er i Installera och köra Speech-containrar med Docker.

Paket för referensdokumentation (nedladdning) | Ytterligare exempel på GitHub |

I den här instruktionsguiden lär du dig hur du använder Azure AI Speech för textkonvertering i realtid. Taligenkänning i realtid är perfekt för program som kräver omedelbar transkription, till exempel diktering, hjälp med callcenter och textning för livemöten.

Information om hur du konfigurerar miljön för ett exempelprogram finns i Snabbstart: Identifiera och konvertera tal till text.

Installera Speech SDK och exempel

Lagringsplatsen Azure-Samples/cognitive-services-speech-sdk innehåller exempel skrivna i Objective-C för iOS och Mac. Välj en länk för att se installationsinstruktioner för varje exempel:

Mer information finns i Speech SDK för Objective-C-referensen.

Använda en anpassad slutpunkt

Med anpassat tal kan du ladda upp dina egna data, testa och träna en anpassad modell, jämföra noggrannhet mellan modeller och distribuera en modell till en anpassad slutpunkt. I följande exempel visas hur du anger en anpassad slutpunkt:

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

Köra och använda en container

Talcontainrar tillhandahåller websocketbaserade frågeslutpunkts-API:er som nås via Speech SDK och Speech CLI. Som standard använder Speech SDK och Speech CLI den offentliga Speech-tjänsten. Om du vill använda containern måste du ändra initieringsmetoden. Använd en containervärd-URL i stället för nyckel och region.

Mer information om containrar finns i Värd-URL:er i Installera och köra Speech-containrar med Docker.

Paket för referensdokumentation (nedladdning) | Ytterligare exempel på GitHub |

I den här instruktionsguiden lär du dig hur du använder Azure AI Speech för textkonvertering i realtid. Taligenkänning i realtid är perfekt för program som kräver omedelbar transkription, till exempel diktering, hjälp med callcenter och textning för livemöten.

Information om hur du konfigurerar miljön för ett exempelprogram finns i Snabbstart: Identifiera och konvertera tal till text.

Installera Speech SDK och exempel

Lagringsplatsen Azure-Samples/cognitive-services-speech-sdk innehåller exempel skrivna i Swift för iOS och Mac. Välj en länk för att se installationsinstruktioner för varje exempel:

Mer information finns i Speech SDK för Objective-C-referensen.

Använda en anpassad slutpunkt

Med anpassat tal kan du ladda upp dina egna data, testa och träna en anpassad modell, jämföra noggrannhet mellan modeller och distribuera en modell till en anpassad slutpunkt. I följande exempel visas hur du anger en anpassad slutpunkt:

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

Köra och använda en container

Talcontainrar tillhandahåller websocketbaserade frågeslutpunkts-API:er som nås via Speech SDK och Speech CLI. Som standard använder Speech SDK och Speech CLI den offentliga Speech-tjänsten. Om du vill använda containern måste du ändra initieringsmetoden. Använd en containervärd-URL i stället för nyckel och region.

Mer information om containrar finns i Värd-URL:er i Installera och köra Speech-containrar med Docker.

Referensdokumentation Paket (PyPi) | Ytterligare exempel på GitHub |

I den här instruktionsguiden lär du dig hur du använder Azure AI Speech för textkonvertering i realtid. Taligenkänning i realtid är perfekt för program som kräver omedelbar transkription, till exempel diktering, hjälp med callcenter och textning för livemöten.

Information om hur du konfigurerar miljön för ett exempelprogram finns i Snabbstart: Identifiera och konvertera tal till text.

Skapa en talkonfigurationsinstans

Om du vill anropa Speech-tjänsten med hjälp av Speech SDK måste du skapa en SpeechConfig instans. Den här klassen innehåller information om din prenumeration, till exempel din talnyckel och tillhörande region, slutpunkt, värd eller auktoriseringstoken.

  1. Skapa en Speech-resurs i Azure Portal. Hämta resursnyckeln och regionen Speech.
  2. Skapa en SpeechConfig instans med hjälp av följande kod. Ersätt YourSpeechKey och YourSpeechRegion med din Speech-resursnyckel och -region.
speech_config = speechsdk.SpeechConfig(subscription="YourSpeechKey", region="YourSpeechRegion")

Du kan initiera SpeechConfig på några andra sätt:

  • Använd en slutpunkt och skicka in en Slutpunkt för Speech-tjänsten. En talnyckel eller auktoriseringstoken är valfri.
  • Använd en värd och skicka in en värdadress. En talnyckel eller auktoriseringstoken är valfri.
  • Använd en auktoriseringstoken med den associerade regionen/platsen.

Kommentar

Oavsett om du utför taligenkänning, talsyntes, översättning eller avsiktsigenkänning skapar du alltid en konfiguration.

Identifiera tal från en mikrofon

Om du vill känna igen tal med hjälp av enhetens mikrofon skapar du en SpeechRecognizer instans utan att skicka AudioConfigoch skickar speech_configsedan :

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.")
    speech_recognition_result = speech_recognizer.recognize_once_async().get()
    print(speech_recognition_result.text)

from_mic()

Om du vill använda en specifik ljudinmatningsenhet måste du ange enhets-ID:t i AudioConfigoch skicka det till SpeechRecognizer konstruktorns audio_config parameter. Information om hur du hämtar enhets-ID :t finns i Välj en ljudinmatningsenhet med Speech SDK.

Identifiera tal från en fil

Om du vill känna igen tal från en ljudfil i stället för att använda en mikrofon skapar du en AudioConfig instans och använder parametern filename :

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)

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

from_file()

Hantera fel

I föregående exempel hämtas endast den identifierade texten från egenskapen speech_recognition_result.text . Om du vill hantera fel och andra svar måste du skriva kod för att hantera resultatet. Följande kod utvärderar egenskapen speech_recognition_result.reason och:

  • Skriver ut igenkänningsresultatet: speechsdk.ResultReason.RecognizedSpeech.
  • Om det inte finns någon igenkänningsmatchning informerar den användaren: speechsdk.ResultReason.NoMatch.
  • Om ett fel påträffas skriver det ut felmeddelandet: speechsdk.ResultReason.Canceled.
if speech_recognition_result.reason == speechsdk.ResultReason.RecognizedSpeech:
    print("Recognized: {}".format(speech_recognition_result.text))
elif speech_recognition_result.reason == speechsdk.ResultReason.NoMatch:
    print("No speech could be recognized: {}".format(speech_recognition_result.no_match_details))
elif speech_recognition_result.reason == speechsdk.ResultReason.Canceled:
    cancellation_details = speech_recognition_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?")

Använda kontinuerlig igenkänning

I föregående exempel används enkel igenkänning, som identifierar ett enda yttrande. Slutet på ett enskilt yttrande bestäms genom att lyssna efter tystnad i slutet eller tills högst 15 sekunders ljud bearbetas.

Däremot använder du kontinuerlig igenkänning när du vill styra när du ska sluta känna igen. Du måste ansluta till EventSignal för att få igenkänningsresultatet. Om du vill stoppa igenkänningen måste du anropa stop_continuous_recognition() eller stop_continuous_recognition_async(). Här är ett exempel på hur kontinuerlig igenkänning utförs på en ljudinmatningsfil.

Börja med att definiera indata och initiera SpeechRecognizer:

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

Skapa sedan en variabel för att hantera taligenkänningens tillstånd. Ange variabeln till False eftersom du i början av igenkänningen säkert kan anta att den inte är klar:

done = False

Skapa nu ett återanrop för att stoppa kontinuerlig igenkänning när evt tas emot. Ha dessa punkter i åtanke:

  • När evt tas emot skrivs meddelandet evt ut.
  • När evt har tagits emot anropas stop_continuous_recognition() för att stoppa igenkänningen.
  • Igenkänningstillståndet ändras till True.
def stop_cb(evt):
    print('CLOSING on {}'.format(evt))
    speech_recognizer.stop_continuous_recognition()
    nonlocal done
    done = True

Följande kodexempel visar hur du ansluter återanrop till händelser som skickas från SpeechRecognizer. Händelserna är:

  • recognizing: Signal för händelser som innehåller mellanliggande igenkänningsresultat.
  • recognized: Signal för händelser som innehåller slutigenkänningsresultat, vilket indikerar ett lyckat igenkänningsförsök.
  • session_started: Signal för händelser som indikerar starten av en igenkänningssession (åtgärd).
  • session_stopped: Signal för händelser som anger slutet på en igenkänningssession (åtgärd).
  • canceled: Signal för händelser som innehåller avbrutna igenkänningsresultat. Dessa resultat indikerar ett igenkänningsförsök som avbröts till följd av en direkt avbokningsbegäran. Alternativt anger de ett transport- eller protokollfel.
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)

Med allt konfigurerat kan du anropa start_continuous_recognition():

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

Ändra källspråket

En vanlig uppgift för taligenkänning är att ange indataspråket (eller källspråket). I följande exempel visas hur du ändrar indataspråket till tyska. Leta upp din SpeechConfig instans i koden och lägg till den här raden direkt under den:

speech_config.speech_recognition_language="de-DE"

speech_recognition_language är en parameter som tar en sträng som argument. En lista över språk och röststöd finns i Språk och röststöd för Speech-tjänsten.

Språkidentifiering

Du kan använda språkidentifiering med tal till textigenkänning när du behöver identifiera språket i en ljudkälla och sedan transkribera det till text.

Ett fullständigt kodexempel finns i Språkidentifiering.

Använda en anpassad slutpunkt

Med anpassat tal kan du ladda upp dina egna data, testa och träna en anpassad modell, jämföra noggrannhet mellan modeller och distribuera en modell till en anpassad slutpunkt. I följande exempel visas hur du anger en anpassad slutpunkt.

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

Köra och använda en container

Talcontainrar tillhandahåller websocketbaserade frågeslutpunkts-API:er som nås via Speech SDK och Speech CLI. Som standard använder Speech SDK och Speech CLI den offentliga Speech-tjänsten. Om du vill använda containern måste du ändra initieringsmetoden. Använd en containervärd-URL i stället för nyckel och region.

Mer information om containrar finns i Värd-URL:er i Installera och köra Speech-containrar med Docker.

Semantiksegmentering

Semantisk segmentering är en segmenteringsstrategi för taligenkänning som är utformad för att minimera problem som är kopplade till tystnadsbaserad segmentering:

  • Undersegmentering: När användarna talar länge utan pauser kan de se en lång sekvens med text utan pauser ("textvägg"), vilket allvarligt försämrar läsbarheten.
  • Översegmentering: När en användare pausar under en kort tid kan mekanismen för ljudidentifiering segmentera felaktigt.

I stället för att förlita sig på tidsgränser för tystnad returnerar semantiska segmenteringssegment och slutliga resultat när den identifierar meningsslutande skiljetecken (till exempel "." eller "?"). Detta förbättrar användarupplevelsen med segment med högre kvalitet, semantiskt kompletta segment och förhindrar långa mellanliggande resultat.

Om du vill använda semantisk segmentering måste du ange följande egenskap på den SpeechConfig instans som används för att skapa en SpeechRecognizer:

speech_config.set_property(speechsdk.PropertyId.Speech_SegmentationStrategy, "Semantic") 

Några av begränsningarna för semantisk segmentering är följande:

  • Du behöver Speech SDK version 1.41 eller senare för att använda semantisk segmentering.
  • Semantisk segmentering är endast avsedd för kontinuerlig igenkänning. Detta omfattar scenarier som transkription och bildtexter. Den bör inte användas i läget för enkel igenkänning och diktering.
  • Semantisk segmentering är inte tillgängligt för alla språk och nationella inställningar. För närvarande är semantisk segmentering endast tillgängligt för engelska (en) nationella inställningar som en-US, en-GB, en-IN och en-AU.
  • Semantisk segmentering stöder ännu inte konfidenspoäng och NBest-listor. Därför rekommenderar vi inte semantisk segmentering om du använder konfidenspoäng eller NBest-listor.

Tal till text REST API-referens Tal till text REST API för kort ljudreferens | Ytterligare exempel på GitHub |

I den här instruktionsguiden lär du dig hur du använder Azure AI Speech för textkonvertering i realtid. Taligenkänning i realtid är perfekt för program som kräver omedelbar transkription, till exempel diktering, hjälp med callcenter och textning för livemöten.

Information om hur du konfigurerar miljön för ett exempelprogram finns i Snabbstart: Identifiera och konvertera tal till text.

Konvertera tal till text

Kör följande kommando i en kommandotolk. Infoga följande värden i kommandot:

  • Din prenumerationsnyckel för Speech-resursen
  • Din Speech-tjänstregion
  • Sökvägen till indataljudfilen
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'

Du bör få ett svar som i följande exempel:

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

Mer information finns i rest-API-referensen för tal till text.

I den här instruktionsguiden lär du dig hur du använder Azure AI Speech för textkonvertering i realtid. Taligenkänning i realtid är perfekt för program som kräver omedelbar transkription, till exempel diktering, hjälp med callcenter och textning för livemöten.

Information om hur du konfigurerar miljön för ett exempelprogram finns i Snabbstart: Identifiera och konvertera tal till text.

Identifiera tal från en mikrofon

Anslut och slå på datorns mikrofon. Inaktivera alla appar som också kan använda mikrofonen. Vissa datorer har en inbyggd mikrofon, medan andra kräver konfiguration av en Bluetooth-enhet.

Nu är du redo att köra Speech CLI för att känna igen tal från mikrofonen. Från kommandoraden ändrar du till katalogen som innehåller den binära Speech CLI-filen. Kör följande kommando:

spx recognize --microphone

Kommentar

Speech CLI är som standard engelska. Du kan välja ett annat språk än tal till texttabell. Lägg --source de-DE till till för att känna igen tyskt tal.

Tala in i mikrofonen och du kan se transkription av dina ord i text i realtid. Speech CLI stoppas efter en tyst period eller när du väljer Ctrl+C.

Identifiera tal från en fil

Speech CLI kan känna igen tal i många filformat och naturliga språk. I det här exemplet kan du använda valfri .wav fil (16 kHz eller 8 kHz, 16-bitars och mono PCM) som innehåller engelskt tal. Eller om du vill ha ett snabbexempel laddar du ned filen whatstheweatherlike.wav och kopierar den till samma katalog som speech CLI-binärfilen.

Använd följande kommando för att köra Speech CLI för att identifiera tal som finns i ljudfilen:

spx recognize --file whatstheweatherlike.wav

Kommentar

Speech CLI är som standard engelska. Du kan välja ett annat språk än tal till texttabell. Lägg --source de-DE till till för att känna igen tyskt tal.

Speech CLI visar en textavskrift av talet på skärmen.

Köra och använda en container

Talcontainrar tillhandahåller websocketbaserade frågeslutpunkts-API:er som nås via Speech SDK och Speech CLI. Som standard använder Speech SDK och Speech CLI den offentliga Speech-tjänsten. Om du vill använda containern måste du ändra initieringsmetoden. Använd en containervärd-URL i stället för nyckel och region.

Mer information om containrar finns i Värd-URL:er i Installera och köra Speech-containrar med Docker.