Aan de slag met spraak-naar-tekst
Een van de belangrijkste functies van de Speech-service is de mogelijkheid om menselijke spraak te herkennen en te transcriberen (ook wel spraak-naar-tekst genoemd). In deze quickstart leert u meer over het gebruik van de Speech-SDK in uw apps en producten om spraak-naar-tekst-conversie van hoge kwaliteit uit te voeren.
Naar voorbeelden op GitHub
Zie de C#-quickstartvoorbeelden op GitHub als u direct naar voorbeeldcode wilt gaan.
Vereisten
In dit artikel wordt ervan uitgegaan dat u een Azure-account en een abonnement op de Speech-service hebt. Als u geen account en abonnement hebt, kunt u de Speech-service gratis uitproberen.
De Speech-SDK installeren
Als u enkel de pakketnaam nodig hebt om aan de slag te gaan, voer dan Install-Package Microsoft.CognitiveServices.Speech uit in de NuGet-console.
Zie de volgende links voor platformspecifieke installatie-instructies:
Een spraakconfiguratie maken
Als u de Speech-service wilt aanroepen met behulp van de Speech SDK, moet u een SpeechConfig maken. Deze klasse bevat informatie over uw abonnement, zoals uw sleutel en de bijbehorende locatie/regio, eindpunt, host of autorisatie-token. Maak een SpeechConfig met behulp van uw sleutel en locatie/regio. Zie de pagina Sleutels en locatie/regio zoeken om uw sleutellocatie/regiopaar te vinden.
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("<paste-your-speech-key-here>", "<paste-your-speech-location/region-here>");
}
}
Er zijn een paar andere manieren waarop u een SpeechConfig kunt initialiseren:
- Met een eindpunt: geef een Speech-service-eindpunt door. Een sleutel of autorisatietoken is optioneel.
- Met een host: geef een hostadres door. Een sleutel of autorisatietoken is optioneel.
- Met een autorisatie-token: geef een autorisatie-token en de bijbehorende regio/locatie door.
Notitie
Ongeacht of u spraakherkenning, spraaksynthese, vertaling of intentieherkenning uitvoert, u maakt altijd een configuratie.
Herkennen vanaf de microfoon
Als u spraak wilt herkennen met de microfoon van uw apparaat, maakt u een AudioConfig aan met behulp van FromDefaultMicrophoneInput(). Initialiseer vervolgens een SpeechRecognizer, waarbij uw audioConfig en speechConfig worden doorgegeven.
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 recognizer = new SpeechRecognizer(speechConfig, audioConfig);
Console.WriteLine("Speak into your microphone.");
var result = await recognizer.RecognizeOnceAsync();
Console.WriteLine($"RECOGNIZED: Text={result.Text}");
}
async static Task Main(string[] args)
{
var speechConfig = SpeechConfig.FromSubscription("<paste-your-speech-key-here>", "<paste-your-speech-location/region-here>");
await FromMic(speechConfig);
}
}
Als u een specifiek audio-invoerapparaat wilt gebruiken, moet u de apparaat-id opgeven in de AudioConfig. Meer informatie over het ophalen van de apparaat-id voor het audio-invoerapparaat.
Herkennen vanuit bestand
Als u spraak wilt herkennen vanuit een audiobestand in plaats van een microfoon, moet u nog steeds een AudioConfig aanmaken. Wanneer u echter de AudioConfig maakt in plaats van FromDefaultMicrophoneInput() aan te roepen, roept u FromWavFileInput() aan en geeft u het bestandspad door.
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 recognizer = new SpeechRecognizer(speechConfig, audioConfig);
var result = await recognizer.RecognizeOnceAsync();
Console.WriteLine($"RECOGNIZED: Text={result.Text}");
}
async static Task Main(string[] args)
{
var speechConfig = SpeechConfig.FromSubscription("<paste-your-speech-key-here>", "<paste-your-speech-location/region-here>");
await FromFile(speechConfig);
}
}
Herkennen vanuit de gegevensstroom in het geheugen
In veel gevallen is het waarschijnlijk dat uw audiogegevens afkomstig zijn uit de blob-opslag of dat deze al in het geheugen aanwezig zijn als byte[] of een vergelijkbare onbewerkte gegevensstructuur. In het volgende voorbeeld wordt een PushAudioInputStream gebruikt om spraak te herkennen, wat in feite een abstracte geheugenstroom is. De voorbeeldcode doet het volgende:
- Schrijft onbewerkte audiogegevens (PCM) naar de
PushAudioInputStreammet behulp van deWrite()-functie, waarmee eenbyte[]wordt geaccepteerd. - Hiermee leest u een
.wav-bestand met behulp van eenFileReadervoor demonstratiedoeleinden, maar als u al audiogegevens in eenbyte[]hebt, kunt u direct doorgaan om de inhoud naar de invoerstroom te schrijven. - De standaardindeling is 16-bits, 16khz mono PCM. Als u de indeling wilt aanpassen, kunt u een
AudioStreamFormat-object doorgeven aanCreatePushStream()met behulp van de statische functieAudioStreamFormat.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 audioInputStream = AudioInputStream.CreatePushStream();
using var audioConfig = AudioConfig.FromStreamInput(audioInputStream);
using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);
byte[] readBytes;
do
{
readBytes = reader.ReadBytes(1024);
audioInputStream.Write(readBytes, readBytes.Length);
} while (readBytes.Length > 0);
var result = await recognizer.RecognizeOnceAsync();
Console.WriteLine($"RECOGNIZED: Text={result.Text}");
}
async static Task Main(string[] args)
{
var speechConfig = SpeechConfig.FromSubscription("<paste-your-speech-key-here>", "<paste-your-speech-location/region-here>");
await FromStream(speechConfig);
}
}
Als u een push-stream gebruikt als invoer, wordt ervan uitgegaan dat de audiogegevens een onbewerkte PCM zijn, zoals het overslaan van headers.
De API werkt in bepaalde gevallen nog steeds als de header niet is overgeslagen, maar voor de beste resultaten kunt u het implementeren van logica voor het lezen van de headers overwegen, zodat de byte[] begint bij het starten van de audiogegevens.
Foutafhandeling
In de vorige voorbeelden wordt de herkende tekst gewoon opgehaald uit result.text, maar om fouten en andere antwoorden af te handelen, moet u code schrijven om het resultaat te verwerken. Met de volgende code wordt de result.Reason-eigenschap geëvalueerd en:
- Het herkenningsresultaat afdrukken:
ResultReason.RecognizedSpeech - Als er geen herkenningsovereenkomst wordt gevonden, wordt de gebruiker hiervan op de hoogte gesteld:
ResultReason.NoMatch - Als er een fout is opgetreden wordt het foutbericht afgedrukt:
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 update the speech key and location/region info?");
}
break;
}
Continue herkenning
In de vorige voorbeelden wordt herkenning aan het begin gebruikt, waarbij één utterance wordt herkend. Het einde van één uiting wordt bepaald door te luisteren naar stilte aan het einde of tot een maximum van 15 seconden audio is verwerkt.
Continue herkenning wordt daarentegen gebruikt wanneer u wilt bepalen wanneer het herkennen moet stoppen. U moet zich abonneren op de gebeurtenissen Recognizing, Recognizeden Canceled om de herkenningsresultaten op te halen. Als u de herkenning wilt stoppen, moet u StopContinuousRecognitionAsyncaanroepen. Hier volgt een voorbeeld van hoe doorlopende herkenning wordt uitgevoerd op een audio-invoerbestand.
Begin met het definiëren van de invoer en het initialiseren van een SpeechRecognizer:
using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);
Maak vervolgens een TaskCompletionSource<int> om de status van spraakherkenning te beheren.
var stopRecognition = new TaskCompletionSource<int>();
Abonneer u vervolgens op de gebeurtenissen die vanuit de SpeechRecognizer worden verzonden.
Recognizing: Signaal voor gebeurtenissen met tussenliggende herkenningsresultaten.Recognized: Signaal voor gebeurtenissen met definitieve herkenningsresultaten (wat een geslaagde herkenningspoging aangeeft).SessionStopped: Signaal voor gebeurtenissen die het einde van een herkenningssessie (bewerking) aangeven.Canceled: Signaal voor gebeurtenissen met een geannuleerde herkenningsresultaten (waarmee een herkenningspoging wordt aangegeven die is geannuleerd als gevolg van een rechtstreekse annuleringsaanvraag of van een transport- of protocolfout).
recognizer.Recognizing += (s, e) =>
{
Console.WriteLine($"RECOGNIZING: Text={e.Result.Text}");
};
recognizer.Recognized += (s, e) =>
{
if (e.Result.Reason == ResultReason.RecognizedSpeech)
{
Console.WriteLine($"RECOGNIZED: Text={e.Result.Text}");
}
else if (e.Result.Reason == ResultReason.NoMatch)
{
Console.WriteLine($"NOMATCH: Speech could not be recognized.");
}
};
recognizer.Canceled += (s, e) =>
{
Console.WriteLine($"CANCELED: Reason={e.Reason}");
if (e.Reason == CancellationReason.Error)
{
Console.WriteLine($"CANCELED: ErrorCode={e.ErrorCode}");
Console.WriteLine($"CANCELED: ErrorDetails={e.ErrorDetails}");
Console.WriteLine($"CANCELED: Did you update the speech key and location/region info?");
}
stopRecognition.TrySetResult(0);
};
recognizer.SessionStopped += (s, e) =>
{
Console.WriteLine("\n Session stopped event.");
stopRecognition.TrySetResult(0);
};
Als alles is ingesteld, roept u StartContinuousRecognitionAsync aan om te beginnen met herkenning.
await recognizer.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 recognizer.StopContinuousRecognitionAsync();
Dicteermodus
Bij het gebruik van continue herkenning kunt u dicteerverwerking inschakelen met behulp van de bijbehorende functie 'dicteren inschakelen'. In deze modus interpreteert de spraakconfiguratie-instantie woordbeschrijvingen van zinselementen zoals interpunctie. Bijvoorbeeld: de uiting 'Woon je hier in de stad vraagteken' wordt geïnterpreteerd als de tekst 'Woon je hier in de stad?'.
Als u de dicteermodus wilt inschakelen, gebruikt u de EnableDictation-methode op uw SpeechConfig.
speechConfig.EnableDictation();
Brontaal wijzigen
Een veelvoorkomende taak voor spraakherkenning is het opgeven van de invoer- (of bron)taal. Laten we eens kijken hoe u de invoertaal wijzigt in Italiaans. Zoek uw SpeechConfig in uw code en voeg deze regel daar direct onder toe.
speechConfig.SpeechRecognitionLanguage = "it-IT";
De eigenschap SpeechRecognitionLanguage verwacht een indelingstekenreeks voor taal-landinstellingen. U kunt in de lijst met ondersteunde Landinstellingen en talen een willekeurige waarde opgeven in de kolom Landinstelling.
Nauwkeurigheid van de herkenning verbeteren
Frasenlijsten worden gebruikt om bekende frasen in audiogegevens te identificeren, zoals de naam van een persoon of een specifieke locatie. Als u een lijst met zinsdelen opgeeft, verbetert u de nauwkeurigheid van spraakherkenning.
Als u bijvoorbeeld als mogelijke uitspraken een opdracht 'Move to' en een mogelijke bestemming 'Ward' hebt, kunt u een vermelding van 'Move to Ward' toevoegen. Door een woordgroep toe te voegen, wordt de kans groter dat een geluidsfragment wordt herkend als 'Move to Ward' in plaats van 'Move toward'.
Er kunnen losse woorden of hele frasen worden toegevoegd aan een frasenlijst. Tijdens de herkenning wordt een vermelding in een woordgroepenlijst gebruikt om herkenning van woorden en zinsdelen in de lijst te verbeteren, zelfs wanneer vermeldingen in het midden van een utterance voorkomen.
Belangrijk
De functie Frasenlijst is beschikbaar in de volgende talen: en-US, de-DE, en-AU, en-CA, en-GB, en-IN, es-ES, fr-FR, it-IT, ja-JP, pt-BR, zh-CN
De functie Frasenlijst moet worden gebruikt met niet meer dan een paar honderd zinnen. Als u een grotere lijst hebt of voor talen die momenteel niet worden ondersteund, is het trainen van een aangepast model waarschijnlijk de betere keuze om de nauwkeurigheid te verbeteren.
De functie Frasenlijst wordt niet ondersteund met aangepaste eindpunten. Gebruik deze niet met aangepaste eindpunten. Train in plaats daarvan een aangepast model dat de zinnen bevat.
Als u een frasenlijst wilt gebruiken, maakt u eerst een PhraseListGrammar-object, en voegt u vervolgens specifieke woorden en frasen toe met AddPhrase.
Wijzigingen in PhraseListGrammar worden van kracht bij de volgende herkenning of na het opnieuw verbinden met de spraakservice.
var phraseList = PhraseListGrammar.FromRecognizer(recognizer);
phraseList.AddPhrase("Supercalifragilisticexpialidocious");
Als u uw frasenlijst wilt wissen:
phraseList.Clear();
Andere opties voor het verbeteren van de nauwkeurigheid van de herkenning
Frasenlijsten zijn maar één optie om de nauwkeurigheid van de herkenning te verbeteren. U kunt ook het volgende doen:
Een van de belangrijkste functies van de Speech-service is de mogelijkheid om menselijke spraak te herkennen en te transcriberen (ook wel spraak-naar-tekst genoemd). In deze quickstart leert u meer over het gebruik van de Speech-SDK in uw apps en producten om spraak-naar-tekst-conversie van hoge kwaliteit uit te voeren.
Naar voorbeelden op GitHub
Raadpleeg de C++-quickstartvoorbeelden op GitHub als u direct naar voorbeeldcode wilt gaan.
Vereisten
In dit artikel wordt ervan uitgegaan dat u een Azure-account en een abonnement op de Speech-service hebt. Als u geen account en abonnement hebt, kunt u de Speech-service gratis uitproberen.
De Speech-SDK installeren
Voordat u iets kunt doen, moet u de Speech SDK installeren. Gebruik de volgende instructies, afhankelijk van uw platform:
Een spraakconfiguratie maken
Als u de Speech-service wilt aanroepen met behulp van de Speech SDK, moet u een SpeechConfig maken. Deze klasse bevat informatie over uw abonnement, zoals uw sleutel en de bijbehorende locatie/regio, eindpunt, host of autorisatie-token. Maak een SpeechConfig met behulp van uw sleutel en regio. Zie de pagina Sleutels en locatie/regio zoeken om uw sleutellocatie/regiopaar te vinden.
using namespace std;
using namespace Microsoft::CognitiveServices::Speech;
auto config = SpeechConfig::FromSubscription("<paste-your-speech-key-here>", "<paste-your-speech-location/region-here>");
Er zijn een paar andere manieren waarop u een SpeechConfig kunt initialiseren:
- Met een eindpunt: geef een Speech-service-eindpunt door. Een sleutel of autorisatietoken is optioneel.
- Met een host: geef een hostadres door. Een sleutel of autorisatietoken is optioneel.
- Met een autorisatietoken: geef een autorisatietoken en de bijbehorende regio door.
Notitie
Ongeacht of u spraakherkenning, spraaksynthese, vertaling of intentieherkenning uitvoert, u maakt altijd een configuratie.
Herkennen vanaf de microfoon
Als u spraak wilt herkennen met de microfoon van uw apparaat, maakt u een AudioConfig aan met behulp van FromDefaultMicrophoneInput(). Initialiseer vervolgens een SpeechRecognizer, waarbij uw audioConfig en config worden doorgegeven.
using namespace Microsoft::CognitiveServices::Speech::Audio;
auto audioConfig = AudioConfig::FromDefaultMicrophoneInput();
auto recognizer = SpeechRecognizer::FromConfig(config, audioConfig);
cout << "Speak into your microphone." << std::endl;
auto result = recognizer->RecognizeOnceAsync().get();
cout << "RECOGNIZED: Text=" << result->Text << std::endl;
Als u een specifiek audio-invoerapparaat wilt gebruiken, moet u de apparaat-id opgeven in de AudioConfig. Meer informatie over het ophalen van de apparaat-id voor het audio-invoerapparaat.
Herkennen vanuit bestand
Als u spraak wilt herkennen vanuit een audiobestand in plaats van met een microfoon, moet u nog steeds een AudioConfig aanmaken. Wanneer u echter de AudioConfig maakt in plaats van FromDefaultMicrophoneInput() aan te roepen, roept u FromWavFileInput() aan en geeft u het bestandspad door.
using namespace Microsoft::CognitiveServices::Speech::Audio;
auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
auto recognizer = SpeechRecognizer::FromConfig(config, audioInput);
auto result = recognizer->RecognizeOnceAsync().get();
cout << "RECOGNIZED: Text=" << result->Text << std::endl;
Spraak herkennen
De Recognizer-klasse voor de Speech SDK voor C++ maakt een aantal methoden beschikbaar die u voor spraakherkenning kunt gebruiken.
Herkenning van begin
Bij herkenning aan het begin wordt asynchroon één uiting herkend. Het einde van één uiting wordt bepaald door te luisteren naar stilte aan het einde of tot een maximum van 15 seconden audio is verwerkt. Hier is een voorbeeld van asynchrone herkenning aan het begin met behulp van RecognizeOnceAsync :
auto result = recognizer->RecognizeOnceAsync().get();
U moet code schrijven om het resultaat af te handelen. In dit voorbeeld wordt de result->Reason geëvalueerd:
- Het herkenningsresultaat afdrukken:
ResultReason::RecognizedSpeech - Als er geen herkenningsovereenkomst wordt gevonden, wordt de gebruiker hiervan op de hoogte gesteld:
ResultReason::NoMatch - Als er een fout is opgetreden wordt het foutbericht afgedrukt:
ResultReason::Canceled
switch (result->Reason)
{
case ResultReason::RecognizedSpeech:
cout << "We recognized: " << result->Text << std::endl;
break;
case ResultReason::NoMatch:
cout << "NOMATCH: Speech could not be recognized." << std::endl;
break;
case ResultReason::Canceled:
{
auto cancellation = CancellationDetails::FromResult(result);
cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;
if (cancellation->Reason == CancellationReason::Error) {
cout << "CANCELED: ErrorCode= " << (int)cancellation->ErrorCode << std::endl;
cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
cout << "CANCELED: Did you update the speech key and location/region info?" << std::endl;
}
}
break;
default:
break;
}
Continue herkenning
Continue herkenning is iets meer betrokken dan herkenning bij het begin. U moet zich abonneren op de gebeurtenissen Recognizing, Recognizeden Canceled om de herkenningsresultaten op te halen. Als u de herkenning wilt stoppen, moet u StopContinuousRecognitionAsync aanroepen. Hier volgt een voorbeeld van hoe doorlopende herkenning wordt uitgevoerd op een audio-invoerbestand.
Laten we beginnen met het definiëren van de invoer en het initialiseren van een SpeechRecognizer:
auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
auto recognizer = SpeechRecognizer::FromConfig(config, audioInput);
Vervolgens maken we een variabele voor het beheren van de status van spraakherkenning. Om te beginnen, declareren we een promise<void>, omdat we bij het begin van de herkenning zonder twijfel kunnen aannemen dat deze niet is voltooid.
promise<void> recognitionEnd;
We nemen een abonnement op de gebeurtenissen die vanuit de SpeechRecognizer worden verzonden.
Recognizing: Signaal voor gebeurtenissen met tussenliggende herkenningsresultaten.Recognized: Signaal voor gebeurtenissen met definitieve herkenningsresultaten (wat een geslaagde herkenningspoging aangeeft).SessionStopped: Signaal voor gebeurtenissen die het einde van een herkenningssessie (bewerking) aangeven.Canceled: Signaal voor gebeurtenissen met een geannuleerde herkenningsresultaten (waarmee een herkenningspoging wordt aangegeven die is geannuleerd als gevolg van een rechtstreekse annuleringsaanvraag of van een transport- of protocolfout).
recognizer->Recognizing.Connect([](const SpeechRecognitionEventArgs& e)
{
cout << "Recognizing:" << e.Result->Text << std::endl;
});
recognizer->Recognized.Connect([](const SpeechRecognitionEventArgs& e)
{
if (e.Result->Reason == ResultReason::RecognizedSpeech)
{
cout << "RECOGNIZED: Text=" << e.Result->Text
<< " (text could not be translated)" << std::endl;
}
else if (e.Result->Reason == ResultReason::NoMatch)
{
cout << "NOMATCH: Speech could not be recognized." << std::endl;
}
});
recognizer->Canceled.Connect([&recognitionEnd](const SpeechRecognitionCanceledEventArgs& e)
{
cout << "CANCELED: Reason=" << (int)e.Reason << std::endl;
if (e.Reason == CancellationReason::Error)
{
cout << "CANCELED: ErrorCode=" << (int)e.ErrorCode << "\n"
<< "CANCELED: ErrorDetails=" << e.ErrorDetails << "\n"
<< "CANCELED: Did you update the speech key and location/region info?" << std::endl;
recognitionEnd.set_value(); // Notify to stop recognition.
}
});
recognizer->SessionStopped.Connect([&recognitionEnd](const SessionEventArgs& e)
{
cout << "Session stopped.";
recognitionEnd.set_value(); // Notify to stop recognition.
});
Nu alles is ingesteld, kunnen we StopContinuousRecognitionAsync aanroepen.
// Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
recognizer->StartContinuousRecognitionAsync().get();
// Waits for recognition end.
recognitionEnd.get_future().get();
// Stops recognition.
recognizer->StopContinuousRecognitionAsync().get();
Dicteermodus
Bij het gebruik van continue herkenning kunt u dicteerverwerking inschakelen met behulp van de bijbehorende functie 'dicteren inschakelen'. In deze modus interpreteert de spraakconfiguratie-instantie woordbeschrijvingen van zinselementen zoals interpunctie. Bijvoorbeeld: de uiting 'Woon je hier in de stad vraagteken' wordt geïnterpreteerd als de tekst 'Woon je hier in de stad?'.
Als u de dicteermodus wilt inschakelen, gebruikt u de EnableDictation-methode op uw SpeechConfig.
config->EnableDictation();
Brontaal wijzigen
Een veelvoorkomende taak voor spraakherkenning is het opgeven van de invoer- (of bron)taal. Laten we eens kijken hoe u de invoertaal wijzigt in Duits. Zoek uw SpeechConfig in uw code en voeg deze regel daar direct onder toe.
config->SetSpeechRecognitionLanguage("de-DE");
SetSpeechRecognitionLanguage is een parameter die een tekenreeks als argument gebruikt. U kunt elke waarde in de lijst met ondersteunde landinstellingen/talen opgeven.
Nauwkeurigheid van de herkenning verbeteren
Frasenlijsten worden gebruikt om bekende frasen in audiogegevens te identificeren, zoals de naam van een persoon of een specifieke locatie. Als u een lijst met zinsdelen opgeeft, verbetert u de nauwkeurigheid van spraakherkenning.
Als u bijvoorbeeld als mogelijke uitspraken een opdracht 'Move to' en een mogelijke bestemming 'Ward' hebt, kunt u een vermelding van 'Move to Ward' toevoegen. Door een woordgroep toe te voegen, wordt de kans groter dat een geluidsfragment wordt herkend als 'Move to Ward' in plaats van 'Move toward'.
Er kunnen losse woorden of hele frasen worden toegevoegd aan een frasenlijst. Tijdens de herkenning wordt een vermelding in een woordgroepenlijst gebruikt om herkenning van woorden en zinsdelen in de lijst te verbeteren, zelfs wanneer vermeldingen in het midden van een utterance voorkomen.
Belangrijk
De functie Frasenlijst is beschikbaar in de volgende talen: en-US, de-DE, en-AU, en-CA, en-GB, en-IN, es-ES, fr-FR, it-IT, ja-JP, pt-BR, zh-CN
De functie Frasenlijst moet worden gebruikt met niet meer dan een paar honderd woordgroepen. Als u een grotere lijst hebt of voor talen die momenteel niet worden ondersteund, is het trainen van een aangepast model waarschijnlijk de betere keuze om de nauwkeurigheid te verbeteren.
De functie Frasenlijst wordt niet ondersteund met aangepaste eindpunten. Gebruik deze niet met aangepaste eindpunten. Train in plaats daarvan een aangepast model dat de zinnen bevat.
Als u een frasenlijst wilt gebruiken, maakt u eerst een PhraseListGrammar-object, en voegt u vervolgens specifieke woorden en frasen toe met AddPhrase.
Wijzigingen in PhraseListGrammar worden van kracht bij de volgende herkenning of na het opnieuw verbinden met de spraakservice.
auto phraseListGrammar = PhraseListGrammar::FromRecognizer(recognizer);
phraseListGrammar->AddPhrase("Supercalifragilisticexpialidocious");
Als u uw frasenlijst wilt wissen:
phraseListGrammar->Clear();
Andere opties voor het verbeteren van de nauwkeurigheid van de herkenning
Frasenlijsten zijn maar één optie om de nauwkeurigheid van de herkenning te verbeteren. U kunt ook het volgende doen:
Een van de belangrijkste functies van de Speech-service is de mogelijkheid om menselijke spraak te herkennen en te transcriberen (ook wel spraak-naar-tekst genoemd). In deze quickstart leert u meer over het gebruik van de Speech-SDK in uw apps en producten om spraak-naar-tekst-conversie van hoge kwaliteit uit te voeren.
Naar voorbeelden op GitHub
Raadpleeg de Go-quickstart-voorbeelden op GitHub als u direct naar voorbeeldcode wilt gaan.
Vereisten
In dit artikel wordt ervan uitgegaan dat u een Azure-account en een abonnement op de Speech-service hebt. Als u geen account en abonnement hebt, kunt u de Speech-service gratis uitproberen.
De Speech-SDK installeren
Voordat u iets kunt doen, moet u de Speech-SDK voor Go installeren.
Spraak naar tekst vanuit een microfoon
Gebruik het volgende codevoorbeeld om spraakherkenning uit te voeren met de standaardmicrofoon van het apparaat. Vervang de variabelen en subscription door region uw spraaksleutel en locatie/regio. Zie de pagina Sleutels en locatie/regio zoeken om uw sleutellocatie/regiopaar te vinden. Wanneer het script wordt uitgevoerd, wordt er een herkenningssessie gestart op de standaardmicrofoon en wordt er tekst uitgevoerd.
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)
}
func main() {
subscription := "<paste-your-speech-key-here>"
region := "<paste-your-speech-location/region-here>"
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')
}
Voer de volgende opdrachten uit om een go.mod-bestand te maken dat is koppelingen naar onderdelen die worden gehost op GitHub.
go mod init quickstart
go get github.com/Microsoft/cognitive-services-speech-sdk-go
Bouw de code en voer deze uit.
go build
go run quickstart
Zie de referentiedocumenten voor gedetailleerde informatie over de klassen SpeechConfig en SpeechRecognizer.
Spraak naar tekst vanuit een audiobestand
Gebruik het volgende voorbeeld om spraakherkenning uit te voeren met een audiobestand. Vervang de variabelen en subscription door region uw spraaksleutel en locatie/regio. Zie de pagina Sleutels en locatie/regio zoeken om uw sleutellocatie/regiopaar te vinden. Vervang ook de variabele file door een pad naar een WAV-bestand. Als u het script uitvoert, wordt spraak uit het bestand herkend en het tekstresultaat uitgevoerd.
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 := "<paste-your-speech-key-here>"
region := "<paste-your-speech-location/region-here>"
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)
}
Voer de volgende opdrachten uit om een go.mod-bestand te maken dat is koppelingen naar onderdelen die worden gehost op GitHub.
go mod init quickstart
go get github.com/Microsoft/cognitive-services-speech-sdk-go
Bouw de code en voer deze uit.
go build
go run quickstart
Zie de referentiedocumenten voor gedetailleerde informatie over de klassen SpeechConfig en SpeechRecognizer.
Een van de belangrijkste functies van de Speech-service is de mogelijkheid om menselijke spraak te herkennen en te transcriberen (ook wel spraak-naar-tekst genoemd). In deze quickstart leert u meer over het gebruik van de Speech-SDK in uw apps en producten om spraak-naar-tekst-conversie van hoge kwaliteit uit te voeren.
Naar voorbeelden op GitHub
Raadpleeg de Java-quickstartvoorbeelden op GitHub als u direct naar voorbeeldcode wilt gaan.
Vereisten
In dit artikel wordt ervan uitgegaan dat u een Azure-account en een abonnement op de Speech-service hebt. Als u geen account en abonnement hebt, kunt u de Speech-service gratis uitproberen.
De Speech-SDK installeren
Voordat u iets kunt doen, moet u de Speech SDK installeren. Gebruik de volgende instructies, afhankelijk van uw platform:
Een spraakconfiguratie maken
Als u de Speech-service wilt aanroepen met behulp van de Speech SDK, moet u een SpeechConfig maken. Deze klasse bevat informatie over uw abonnement, zoals uw sleutel en de bijbehorende locatie/regio, eindpunt, host of autorisatie-token. Maak een SpeechConfig met behulp van uw sleutel en locatie/regio. Zie de pagina Sleutels en locatie/regio zoeken om uw sleutellocatie/regiopaar te vinden.
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>");
}
}
Er zijn een paar andere manieren waarop u een SpeechConfig kunt initialiseren:
- Met een eindpunt: geef een Speech-service-eindpunt door. Een sleutel of autorisatietoken is optioneel.
- Met een host: geef een hostadres door. Een sleutel of autorisatietoken is optioneel.
- Met een autorisatietoken: geef een autorisatietoken en de bijbehorende regio door.
Notitie
Ongeacht of u spraakherkenning, spraaksynthese, vertaling of intentieherkenning uitvoert, u maakt altijd een configuratie.
Herkennen vanaf de microfoon
Als u spraak wilt herkennen met de microfoon van uw apparaat, maakt u een AudioConfig aan met behulp van fromDefaultMicrophoneInput(). Initialiseer vervolgens een SpeechRecognizer, waarbij uw audioConfig en config worden doorgegeven.
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 recognizer = new SpeechRecognizer(speechConfig, audioConfig);
System.out.println("Speak into your microphone.");
Future<SpeechRecognitionResult> task = recognizer.recognizeOnceAsync();
SpeechRecognitionResult result = task.get();
System.out.println("RECOGNIZED: Text=" + result.getText());
}
}
Als u een specifiek audio-invoerapparaat wilt gebruiken, moet u de apparaat-id opgeven in de AudioConfig. Meer informatie over het ophalen van de apparaat-id voor het audio-invoerapparaat.
Herkennen vanuit bestand
Als u spraak wilt herkennen vanuit een audiobestand in plaats van met een microfoon, moet u nog steeds een AudioConfig aanmaken. Wanneer u echter de AudioConfig maakt in plaats van fromDefaultMicrophoneInput() aan te roepen, roept u fromWavFileInput() aan en geeft u het bestandspad door.
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 recognizer = new SpeechRecognizer(speechConfig, audioConfig);
Future<SpeechRecognitionResult> task = recognizer.recognizeOnceAsync();
SpeechRecognitionResult result = task.get();
System.out.println("RECOGNIZED: Text=" + result.getText());
}
}
Foutafhandeling
In de vorige voorbeelden wordt de herkende tekst gewoon opgehaald met result.getText(), maar om fouten en andere antwoorden af te handelen, moet u code schrijven om het resultaat te verwerken. In het volgende voorbeeld wordt de eigenschap result.getReason() geëvalueerd en:
- Het herkenningsresultaat afdrukken:
ResultReason.RecognizedSpeech - Als er geen herkenningsovereenkomst wordt gevonden, wordt de gebruiker hiervan op de hoogte gesteld:
ResultReason.NoMatch - Als er een fout is opgetreden wordt het foutbericht afgedrukt:
ResultReason.Canceled
switch (result.getReason()) {
case ResultReason.RecognizedSpeech:
System.out.println("We recognized: " + result.getText());
exitCode = 0;
break;
case ResultReason.NoMatch:
System.out.println("NOMATCH: Speech could not be recognized.");
break;
case ResultReason.Canceled: {
CancellationDetails cancellation = CancellationDetails.fromResult(result);
System.out.println("CANCELED: Reason=" + cancellation.getReason());
if (cancellation.getReason() == CancellationReason.Error) {
System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode());
System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails());
System.out.println("CANCELED: Did you update the subscription info?");
}
}
break;
}
Continue herkenning
In de vorige voorbeelden wordt herkenning aan het begin gebruikt, waarbij één utterance wordt herkend. Het einde van één uiting wordt bepaald door te luisteren naar stilte aan het einde of tot een maximum van 15 seconden audio is verwerkt.
Continue herkenning wordt daarentegen gebruikt wanneer u wilt bepalen wanneer het herkennen moet stoppen. U moet zich abonneren op de gebeurtenissen recognizing, recognizeden canceled om de herkenningsresultaten op te halen. Als u de herkenning wilt stoppen, moet u stopContinuousRecognitionAsyncaanroepen. Hier volgt een voorbeeld van hoe doorlopende herkenning wordt uitgevoerd op een audio-invoerbestand.
Laten we beginnen met het definiëren van de invoer en het initialiseren van een SpeechRecognizer:
AudioConfig audioConfig = AudioConfig.fromWavFileInput("YourAudioFile.wav");
SpeechRecognizer recognizer = new SpeechRecognizer(config, audioConfig);
Vervolgens maken we een variabele voor het beheren van de status van spraakherkenning. We declareren een Semaphore in het klassebereik.
private static Semaphore stopTranslationWithFileSemaphore;
We nemen een abonnement op de gebeurtenissen die vanuit de SpeechRecognizer worden verzonden.
recognizing: Signaal voor gebeurtenissen met tussenliggende herkenningsresultaten.recognized: Signaal voor gebeurtenissen met definitieve herkenningsresultaten (wat een geslaagde herkenningspoging aangeeft).sessionStopped: Signaal voor gebeurtenissen die het einde van een herkenningssessie (bewerking) aangeven.canceled: Signaal voor gebeurtenissen met een geannuleerde herkenningsresultaten (waarmee een herkenningspoging wordt aangegeven die is geannuleerd als gevolg van een rechtstreekse annuleringsaanvraag of van een transport- of protocolfout).
// First initialize the semaphore.
stopTranslationWithFileSemaphore = new Semaphore(0);
recognizer.recognizing.addEventListener((s, e) -> {
System.out.println("RECOGNIZING: Text=" + e.getResult().getText());
});
recognizer.recognized.addEventListener((s, e) -> {
if (e.getResult().getReason() == ResultReason.RecognizedSpeech) {
System.out.println("RECOGNIZED: Text=" + e.getResult().getText());
}
else if (e.getResult().getReason() == ResultReason.NoMatch) {
System.out.println("NOMATCH: Speech could not be recognized.");
}
});
recognizer.canceled.addEventListener((s, e) -> {
System.out.println("CANCELED: Reason=" + e.getReason());
if (e.getReason() == CancellationReason.Error) {
System.out.println("CANCELED: ErrorCode=" + e.getErrorCode());
System.out.println("CANCELED: ErrorDetails=" + e.getErrorDetails());
System.out.println("CANCELED: Did you update the subscription info?");
}
stopTranslationWithFileSemaphore.release();
});
recognizer.sessionStopped.addEventListener((s, e) -> {
System.out.println("\n Session stopped event.");
stopTranslationWithFileSemaphore.release();
});
Nu alles is ingesteld, kunnen we startContinuousRecognitionAsync aanroepen.
// Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
recognizer.startContinuousRecognitionAsync().get();
// Waits for completion.
stopTranslationWithFileSemaphore.acquire();
// Stops recognition.
recognizer.stopContinuousRecognitionAsync().get();
Dicteermodus
Bij het gebruik van continue herkenning kunt u dicteerverwerking inschakelen met behulp van de bijbehorende functie 'dicteren inschakelen'. In deze modus interpreteert de spraakconfiguratie-instantie woordbeschrijvingen van zinselementen zoals interpunctie. Bijvoorbeeld: de uiting 'Woon je hier in de stad vraagteken' wordt geïnterpreteerd als de tekst 'Woon je hier in de stad?'.
Als u de dicteermodus wilt inschakelen, gebruikt u de enableDictation-methode op uw SpeechConfig.
config.enableDictation();
Brontaal wijzigen
Een veelvoorkomende taak voor spraakherkenning is het opgeven van de invoer- (of bron)taal. Laten we eens kijken hoe u de invoertaal wijzigt in Frans. Zoek uw SpeechConfig in uw code en voeg deze regel daar direct onder toe.
config.setSpeechRecognitionLanguage("fr-FR");
setSpeechRecognitionLanguage is een parameter die een tekenreeks als argument gebruikt. U kunt elke waarde in de lijst met ondersteunde landinstellingen/talen opgeven.
Nauwkeurigheid van de herkenning verbeteren
Frasenlijsten worden gebruikt om bekende frasen in audiogegevens te identificeren, zoals de naam van een persoon of een specifieke locatie. Als u een lijst met zinsdelen opgeeft, verbetert u de nauwkeurigheid van spraakherkenning.
Als u bijvoorbeeld als mogelijke uitspraken een opdracht 'Move to' en een mogelijke bestemming 'Ward' hebt, kunt u een vermelding van 'Move to Ward' toevoegen. Door een woordgroep toe te voegen, wordt de kans groter dat een geluidsfragment wordt herkend als 'Move to Ward' in plaats van 'Move toward'.
Er kunnen losse woorden of hele frasen worden toegevoegd aan een frasenlijst. Tijdens de herkenning wordt een vermelding in een woordgroepenlijst gebruikt om herkenning van woorden en zinsdelen in de lijst te verbeteren, zelfs wanneer vermeldingen in het midden van een utterance voorkomen.
Belangrijk
De functie Frasenlijst is beschikbaar in de volgende talen: en-US, de-DE, en-AU, en-CA, en-GB, en-IN, es-ES, fr-FR, it-IT, ja-JP, pt-BR, zh-CN
De functie Frasenlijst moet worden gebruikt met niet meer dan een paar honderd zinnen. Als u een grotere lijst hebt of voor talen die momenteel niet worden ondersteund, is het trainen van een aangepast model waarschijnlijk de betere keuze om de nauwkeurigheid te verbeteren.
De functie Frasenlijst wordt niet ondersteund met aangepaste eindpunten. Gebruik deze niet met aangepaste eindpunten. Train in plaats daarvan een aangepast model dat de zinnen bevat.
Als u een frasenlijst wilt gebruiken, maakt u eerst een PhraseListGrammar-object, en voegt u vervolgens specifieke woorden en frasen toe met AddPhrase.
Wijzigingen in PhraseListGrammar worden van kracht bij de volgende herkenning of na het opnieuw verbinden met de spraakservice.
PhraseListGrammar phraseList = PhraseListGrammar.fromRecognizer(recognizer);
phraseList.addPhrase("Supercalifragilisticexpialidocious");
Als u uw frasenlijst wilt wissen:
phraseList.clear();
Andere opties voor het verbeteren van de nauwkeurigheid van de herkenning
Frasenlijsten zijn maar één optie om de nauwkeurigheid van de herkenning te verbeteren. U kunt ook het volgende doen:
Een van de belangrijkste functies van de Speech-service is de mogelijkheid om menselijke spraak te herkennen en te transcriberen (ook wel spraak-naar-tekst genoemd). In deze quickstart leert u meer over het gebruik van de Speech-SDK in uw apps en producten om spraak-naar-tekst-conversie van hoge kwaliteit uit te voeren.
Naar voorbeelden op GitHub
Raadpleeg de JavaScript-quickstartvoorbeelden op GitHub als u direct naar voorbeeldcode wilt gaan.
U kunt ook het voorbeeld React voor meer informatie over het gebruik van de Speech SDK in een browseromgeving.
Vereisten
In dit artikel wordt ervan uitgegaan dat u een Azure-account en een abonnement op de Speech-service hebt. Als u geen account en abonnement hebt, kunt u de Speech-service gratis uitproberen.
De Speech-SDK installeren
Voordat u iets kunt doen, moet u de Speech SDK voor Node.js. Als u alleen de pakketnaam wilt installeren, voer dan npm install microsoft-cognitiveservices-speech-sdk uit. Zie het artikel Aan de slag voor instructies voor begeleide installatie.
Gebruik de volgende require instructie om de SDK te importeren.
const sdk = require("microsoft-cognitiveservices-speech-sdk");
Zie de documentatie vereisen voor require meer informatie over.
Een spraakconfiguratie maken
Als u de Speech-service wilt aanroepen met behulp van de Speech SDK, moet u een SpeechConfig maken. Deze klasse bevat informatie over uw abonnement, zoals uw sleutel en de bijbehorende locatie/regio, eindpunt, host of autorisatie-token. Maak een SpeechConfig met behulp van uw sleutel en locatie/regio. Zie de pagina Sleutels en locatie/regio zoeken om uw sleutellocatie/regiopaar te vinden.
const speechConfig = sdk.SpeechConfig.fromSubscription("<paste-your-speech-key-here>", "<paste-your-speech-location/region-here>");
Er zijn een paar andere manieren waarop u een SpeechConfig kunt initialiseren:
- Met een eindpunt: geef een Speech-service-eindpunt door. Een sleutel of autorisatietoken is optioneel.
- Met een host: geef een hostadres door. Een sleutel of autorisatietoken is optioneel.
- Met een autorisatie-token: geef een autorisatie-token en de bijbehorende locatie/regio door.
Notitie
Ongeacht of u spraakherkenning, spraaksynthese, vertaling of intentieherkenning uitvoert, u maakt altijd een configuratie.
Herkennen met de microfoon (alleen browser)
Het herkennen van spraak met een microfoon wordt niet ondersteund in Node.js en wordt alleen ondersteund in een JavaScript-omgeving op basis van een browser. Zie het React voorbeeld op GitHub om de spraak-naar-tekst van de microfoon-implementatie te zien.
Notitie
Als u een specifiek audio-invoerapparaat wilt gebruiken, moet u de apparaat-id opgeven in de AudioConfig. Meer informatie over het ophalen van de apparaat-id voor het audio-invoerapparaat.
Herkennen vanuit bestand
Als u spraak wilt herkennen vanuit een audiobestand, maakt u een AudioConfig met fromWavFileInput() die een Buffer -object accepteert. Initialiseer vervolgens een SpeechRecognizer, waarbij uw audioConfig en speechConfig worden doorgegeven.
const fs = require('fs');
const sdk = require("microsoft-cognitiveservices-speech-sdk");
const speechConfig = sdk.SpeechConfig.fromSubscription("<paste-your-speech-key-here>", "<paste-your-speech-location/region-here>");
function fromFile() {
let audioConfig = sdk.AudioConfig.fromWavFileInput(fs.readFileSync("YourAudioFile.wav"));
let recognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);
recognizer.recognizeOnceAsync(result => {
console.log(`RECOGNIZED: Text=${result.text}`);
recognizer.close();
});
}
fromFile();
Herkennen vanuit de gegevensstroom in het geheugen
Voor veel gebruiksgevallen zijn uw audiogegevens waarschijnlijk afkomstig uit blobopslag of zijn ze anders al in het geheugen als een of vergelijkbare onbewerkte ArrayBuffer gegevensstructuur. De volgende code:
- Hiermee maakt u een pushstream met
createPushStream()behulp van . - Leest een bestand
.wavmet voor demonstratiedoeleinden, maar als u al audiogegevens in een hebt, kunt u direct verder gaan met het schrijven van de inhoud naarfs.createReadStreamdeArrayBufferinvoerstroom. - Hiermee maakt u een audio-configuratie met behulp van de pushstream.
const fs = require('fs');
const sdk = require("microsoft-cognitiveservices-speech-sdk");
const speechConfig = sdk.SpeechConfig.fromSubscription("<paste-your-speech-key-here>", "<paste-your-speech-location/region-here>");
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 recognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);
recognizer.recognizeOnceAsync(result => {
console.log(`RECOGNIZED: Text=${result.text}`);
recognizer.close();
});
}
fromStream();
Als u een push-stream gebruikt als invoer, wordt ervan uitgegaan dat de audiogegevens een onbewerkte PCM zijn, zoals het overslaan van headers.
De API werkt in bepaalde gevallen nog steeds als de header niet is overgeslagen, maar voor de beste resultaten kunt u het implementeren van logica voor het lezen van de headers overwegen, zodat de fs begint bij het starten van de audiogegevens.
Foutafhandeling
In de vorige voorbeelden wordt de herkende tekst gewoon opgehaald uit result.text, maar om fouten en andere antwoorden af te handelen, moet u code schrijven om het resultaat te verwerken. Met de volgende code wordt de result.reason-eigenschap geëvalueerd en:
- Het herkenningsresultaat afdrukken:
ResultReason.RecognizedSpeech - Als er geen herkenningsovereenkomst wordt gevonden, wordt de gebruiker hiervan op de hoogte gesteld:
ResultReason.NoMatch - Als er een fout is opgetreden wordt het foutbericht afgedrukt:
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 = 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 update the key and location/region info?");
}
break;
}
Continue herkenning
In de vorige voorbeelden wordt gebruikgemaakt van herkenning aan het begin, waarbij één utterance wordt herkend. Het einde van één uiting wordt bepaald door te luisteren naar stilte aan het einde of tot een maximum van 15 seconden audio is verwerkt.
Continue herkenning wordt daarentegen gebruikt wanneer u wilt bepalen wanneer het herkennen moet stoppen. U moet zich abonneren op de gebeurtenissen Recognizing, Recognizeden Canceled om de herkenningsresultaten op te halen. Als u de herkenning wilt stoppen, moet u stopContinuousRecognitionAsyncaanroepen. Hier volgt een voorbeeld van hoe doorlopende herkenning wordt uitgevoerd op een audio-invoerbestand.
Begin met het definiëren van de invoer en het initialiseren van een SpeechRecognizer:
const recognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);
Abonneer u vervolgens op de gebeurtenissen die vanuit de SpeechRecognizer worden verzonden.
recognizing: Signaal voor gebeurtenissen met tussenliggende herkenningsresultaten.recognized: Signaal voor gebeurtenissen met definitieve herkenningsresultaten (wat een geslaagde herkenningspoging aangeeft).sessionStopped: Signaal voor gebeurtenissen die het einde van een herkenningssessie (bewerking) aangeven.canceled: Signaal voor gebeurtenissen met een geannuleerde herkenningsresultaten (waarmee een herkenningspoging wordt aangegeven die is geannuleerd als gevolg van een rechtstreekse annuleringsaanvraag of van een transport- of protocolfout).
recognizer.recognizing = (s, e) => {
console.log(`RECOGNIZING: Text=${e.result.text}`);
};
recognizer.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.");
}
};
recognizer.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 update the key and location/region info?");
}
recognizer.stopContinuousRecognitionAsync();
};
recognizer.sessionStopped = (s, e) => {
console.log("\n Session stopped event.");
recognizer.stopContinuousRecognitionAsync();
};
Als alles is ingesteld, roept u startContinuousRecognitionAsync aan om te beginnen met de herkenning.
recognizer.startContinuousRecognitionAsync();
// make the following call at some point to stop recognition.
// recognizer.stopContinuousRecognitionAsync();
Dicteermodus
Bij het gebruik van continue herkenning kunt u dicteerverwerking inschakelen met behulp van de bijbehorende functie 'dicteren inschakelen'. In deze modus interpreteert de spraakconfiguratie-instantie woordbeschrijvingen van zinselementen zoals interpunctie. Bijvoorbeeld: de uiting 'Woon je hier in de stad vraagteken' wordt geïnterpreteerd als de tekst 'Woon je hier in de stad?'.
Als u de dicteermodus wilt inschakelen, gebruikt u de enableDictation-methode op uw SpeechConfig.
speechConfig.enableDictation();
Brontaal wijzigen
Een veelvoorkomende taak voor spraakherkenning is het opgeven van de invoer- (of bron)taal. Laten we eens kijken hoe u de invoertaal wijzigt in Italiaans. Zoek uw SpeechConfig in uw code en voeg deze regel daar direct onder toe.
speechConfig.speechRecognitionLanguage = "it-IT";
De eigenschap speechRecognitionLanguage verwacht een indelingstekenreeks voor taal-landinstellingen. U kunt in de lijst met ondersteunde Landinstellingen en talen een willekeurige waarde opgeven in de kolom Landinstelling.
Nauwkeurigheid van de herkenning verbeteren
Frasenlijsten worden gebruikt om bekende frasen in audiogegevens te identificeren, zoals de naam van een persoon of een specifieke locatie. Als u een lijst met zinsdelen opgeeft, verbetert u de nauwkeurigheid van spraakherkenning.
Als u bijvoorbeeld als mogelijke uitspraken een opdracht 'Move to' en een mogelijke bestemming 'Ward' hebt, kunt u een vermelding van 'Move to Ward' toevoegen. Door een woordgroep toe te voegen, wordt de kans groter dat een geluidsfragment wordt herkend als 'Move to Ward' in plaats van 'Move toward'.
Er kunnen losse woorden of hele frasen worden toegevoegd aan een frasenlijst. Tijdens de herkenning wordt een vermelding in een woordgroepenlijst gebruikt om herkenning van woorden en zinsdelen in de lijst te verbeteren, zelfs wanneer vermeldingen in het midden van een utterance voorkomen.
Belangrijk
De functie Frasenlijst is beschikbaar in de volgende talen: en-US, de-DE, en-AU, en-CA, en-GB, en-IN, es-ES, fr-FR, it-IT, ja-JP, pt-BR, zh-CN
De functie Frasenlijst moet worden gebruikt met niet meer dan een paar honderd woordgroepen. Als u een grotere lijst hebt of voor talen die momenteel niet worden ondersteund, is het trainen van een aangepast model waarschijnlijk de betere keuze om de nauwkeurigheid te verbeteren.
De functie Frasenlijst wordt niet ondersteund met aangepaste eindpunten. Gebruik deze niet met aangepaste eindpunten. Train in plaats daarvan een aangepast model dat de zinnen bevat.
Als u een frasenlijst wilt gebruiken, maakt u eerst een PhraseListGrammar-object, en voegt u vervolgens specifieke woorden en frasen toe met addPhrase.
Wijzigingen in PhraseListGrammar worden van kracht bij de volgende herkenning of na het opnieuw verbinden met de spraakservice.
const phraseList = sdk.PhraseListGrammar.fromRecognizer(recognizer);
phraseList.addPhrase("Supercalifragilisticexpialidocious");
Als u uw frasenlijst wilt wissen:
phraseList.clear();
Andere opties voor het verbeteren van de nauwkeurigheid van de herkenning
Frasenlijsten zijn maar één optie om de nauwkeurigheid van de herkenning te verbeteren. U kunt ook het volgende doen:
Een van de belangrijkste functies van de Speech-service is de mogelijkheid om menselijke spraak te herkennen en te transcriberen (ook wel spraak-naar-tekst genoemd). In dit voorbeeld leert u hoe u de Speech SDK in uw apps en producten kunt gebruiken om spraak-naar-tekst-conversie van hoge kwaliteit uit te voeren.
React voorbeeld op GitHub
Ga naar het React voorbeeld op GitHub voor meer informatie over het gebruik van de Speech SDK in een JavaScript-omgeving in een browser. In dit voorbeeld ziet u voorbeelden van ontwerppatronen voor het uitwisselen en beheren van verificatie-tokens en het vastleggen van audio van een microfoon of bestand voor spraak-naar-tekst-conversies.
Daarnaast kunnen de ontwerppatronen die worden gebruikt in Node.js quickstart ook worden gebruikt in een browseromgeving.
U kunt spraak in tekst transcriberen met behulp van de Speech-SDK voor Swift en Objective-C.
Vereisten
In de volgende artikelen wordt ervan uitgegaan dat u een Azure-account en een abonnement op de Speech-service hebt. Als u geen account en abonnement hebt, kunt u de Speech-service gratis uitproberen.
Speech-SDK en -voorbeelden installeren
De Cognitive Services Speech-SDK bevat voorbeelden die zijn geschreven in Swift en Objective-C voor iOS en Mac. Klik op een koppeling om de installatie-instructies voor elk voorbeeld weer te geven:
- Spraak herkennen met een microfoon in Objective-C in macOS
- Spraak herkennen in Swift in macOS
- Spraak herkennen in Objective-C in iOS
- Spraak herkennen in Swift in iOS
- Aanvullende voorbeelden voor Objective-C in iOS
We bieden ook een online Speech-SDK voor naslaginformatie over Objective-C.
Een van de belangrijkste functies van de Speech-service is de mogelijkheid om menselijke spraak te herkennen en te transcriberen (ook wel spraak-naar-tekst genoemd). In deze quickstart leert u meer over het gebruik van de Speech-SDK in uw apps en producten om spraak-naar-tekst-conversie van hoge kwaliteit uit te voeren.
Naar voorbeelden op GitHub
Raadpleeg de Python-quickstartvoorbeelden op GitHub als u direct naar voorbeeldcode wilt gaan.
Vereisten
In dit artikel wordt ervan uitgegaan dat:
- U een Azure-account en een abonnement op de Speech-service hebt. Als u geen account en abonnement hebt, kunt u de Speech-service gratis uitproberen.
De Speech-SDK installeren en importeren
Voordat u iets kunt doen, moet u de Speech SDK installeren.
pip install azure-cognitiveservices-speech
Als u macOS heeft en er problemen met de installatie optreden, moet u deze opdracht mogelijk eerst uitvoeren.
python3 -m pip install --upgrade pip
Nadat de Speech-SDK is geïnstalleerd, importeert u deze in uw Python-project.
import azure.cognitiveservices.speech as speechsdk
Een spraakconfiguratie maken
Als u de Speech-service wilt aanroepen met behulp van de Speech SDK, moet u een SpeechConfig maken. Deze klasse bevat informatie over uw abonnement, zoals uw sleutel en de bijbehorende locatie/regio, eindpunt, host of autorisatie-token. Maak een SpeechConfig met behulp van uw sleutel en locatie/regio. Zie de pagina Sleutels en locatie/regio zoeken om uw sleutellocatie/regiopaar te vinden.
speech_config = speechsdk.SpeechConfig(subscription="<paste-your-speech-key-here>", region="<paste-your-speech-location/region-here>")
Er zijn een paar andere manieren waarop u een SpeechConfig kunt initialiseren:
- Met een eindpunt: geef een Speech-service-eindpunt door. Een sleutel of autorisatietoken is optioneel.
- Met een host: geef een hostadres door. Een sleutel of autorisatietoken is optioneel.
- Met een autorisatietoken: geef een autorisatietoken en de bijbehorende regio door.
Notitie
Ongeacht of u spraakherkenning, spraaksynthese, vertaling of intentieherkenning uitvoert, u maakt altijd een configuratie.
Herkennen vanaf de microfoon
Als u spraak wilt herkennen met de microfoon van uw apparaat, maakt u gewoon een SpeechRecognizer aan zonder een AudioConfig door te geven en geeft u uw speech_config door.
import azure.cognitiveservices.speech as speechsdk
def from_mic():
speech_config = speechsdk.SpeechConfig(subscription="<paste-your-speech-key-here>", region="<paste-your-speech-location/region-here>")
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()
Als u een specifiek audio-invoerapparaat wilt gebruiken, moet u de apparaat-ID in een AudioConfig opgeven en deze door geven aan de audio_config-parameter van de SpeechRecognizer-constructor. Meer informatie over het ophalen van de apparaat-id voor het audio-invoerapparaat.
Herkennen vanuit bestand
Als u spraak wilt herkennen vanuit een audiobestand in plaats van met een microfoon, maakt u een AudioConfig aan en gebruikt u de parameter filename.
import azure.cognitiveservices.speech as speechsdk
def from_file():
speech_config = speechsdk.SpeechConfig(subscription="<paste-your-speech-key-here>", region="<paste-your-speech-location/region-here>")
audio_input = speechsdk.AudioConfig(filename="your_file_name.wav")
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_input)
result = speech_recognizer.recognize_once_async().get()
print(result.text)
from_file()
Foutafhandeling
In de vorige voorbeelden wordt de herkende tekst gewoon opgehaald uit result.text, maar om fouten en andere antwoorden af te handelen, moet u code schrijven om het resultaat te verwerken. Met de volgende code wordt de result.reason-eigenschap geëvalueerd en:
- Het herkenningsresultaat afdrukken:
speechsdk.ResultReason.RecognizedSpeech - Als er geen herkenningsovereenkomst wordt gevonden, wordt de gebruiker hiervan op de hoogte gesteld:
speechsdk.ResultReason.NoMatch - Als er een fout is opgetreden wordt het foutbericht afgedrukt:
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))
Continue herkenning
In de vorige voorbeelden wordt gebruikgemaakt van herkenning aan het begin, waarbij één utterance wordt herkend. Het einde van één uiting wordt bepaald door te luisteren naar stilte aan het einde of tot een maximum van 15 seconden audio is verwerkt.
Continue herkenning wordt daarentegen gebruikt wanneer u wilt bepalen wanneer het herkennen moet stoppen. Hiervoor moet u verbinding maken met de om de herkenningsresultaten op te halen en om de herkenning te stoppen, moet u EventSignal stop_continuous_recognition() of stop_continuous_recognition() aanroepen. Hier volgt een voorbeeld van hoe doorlopende herkenning wordt uitgevoerd op een audio-invoerbestand.
Laten we beginnen met het definiëren van de invoer en het initialiseren van een SpeechRecognizer:
audio_config = speechsdk.audio.AudioConfig(filename=weatherfilename)
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)
Vervolgens maken we een variabele voor het beheren van de status van spraakherkenning. Om te beginnen, stellen we dit in op False, omdat we bij het begin van de herkenning zonder twijfel kunnen aannemen dat deze niet is voltooid.
done = False
Nu gaan we een callback aanmaken om continue herkenning te stoppen wanneer een evt wordt ontvangen. Er zijn enkele dingen die u moet onthouden.
- Wanneer een
evtwordt ontvangen, wordt hetevt-bericht afgedrukt. - Nadat een
evtis ontvangen, wordt stop_continuous_recognition () aangeroepen om de herkenning te stoppen. - De herkenningsstatus is gewijzigd in
True.
def stop_cb(evt):
print('CLOSING on {}'.format(evt))
speech_recognizer.stop_continuous_recognition()
nonlocal done
done = True
Dit codevoorbeeld toont hoe u callbacks verbindt met gebeurtenissen die vanuit het SpeechRecognizerworden verzonden.
recognizing: Signaal voor gebeurtenissen met tussenliggende herkenningsresultaten.recognized: Signaal voor gebeurtenissen met definitieve herkenningsresultaten (wat een geslaagde herkenningspoging aangeeft).session_started: Signaal voor gebeurtenissen die het begin van een herkenningssessie (bewerking) aangeven.session_stopped: Signaal voor gebeurtenissen die het einde van een herkenningssessie (bewerking) aangeven.canceled: Signaal voor gebeurtenissen met een geannuleerde herkenningsresultaten (waarmee een herkenningspoging wordt aangegeven die is geannuleerd als gevolg van een rechtstreekse annuleringsaanvraag of van een transport- of protocolfout).
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)
Als alles is ingesteld, kunnen we start_continuous_recognition() aanroepen.
speech_recognizer.start_continuous_recognition()
while not done:
time.sleep(.5)
Dicteermodus
Bij het gebruik van continue herkenning kunt u dicteerverwerking inschakelen met behulp van de bijbehorende functie 'dicteren inschakelen'. In deze modus interpreteert de spraakconfiguratie-instantie woordbeschrijvingen van zinselementen zoals interpunctie. Bijvoorbeeld: de uiting 'Woon je hier in de stad vraagteken' wordt geïnterpreteerd als de tekst 'Woon je hier in de stad?'.
Als u de dicteermodus wilt inschakelen, gebruikt u de enable_dictation()-methode op uw SpeechConfig.
SpeechConfig.enable_dictation()
Brontaal wijzigen
Een veelvoorkomende taak voor spraakherkenning is het opgeven van de invoer- (of bron)taal. Laten we eens kijken hoe u de invoertaal wijzigt in Duits. Zoek uw SpeechConfig in uw code en voeg deze regel daar direct onder toe.
speech_config.speech_recognition_language="de-DE"
speech_recognition_language is een parameter die een tekenreeks als argument gebruikt. U kunt elke waarde in de lijst met ondersteunde landinstellingen/talen opgeven.
Nauwkeurigheid van de herkenning verbeteren
Frasenlijsten worden gebruikt om bekende frasen in audiogegevens te identificeren, zoals de naam van een persoon of een specifieke locatie. Als u een lijst met zinsdelen opgeeft, verbetert u de nauwkeurigheid van spraakherkenning.
Als u bijvoorbeeld als mogelijke uitspraken een opdracht 'Move to' en een mogelijke bestemming 'Ward' hebt, kunt u een vermelding van 'Move to Ward' toevoegen. Door een woordgroep toe te voegen, wordt de kans groter dat een geluidsfragment wordt herkend als 'Move to Ward' in plaats van 'Move toward'.
Er kunnen losse woorden of hele frasen worden toegevoegd aan een frasenlijst. Tijdens de herkenning wordt een vermelding in een woordgroepenlijst gebruikt om herkenning van woorden en zinsdelen in de lijst te verbeteren, zelfs wanneer vermeldingen in het midden van een utterance voorkomen.
Belangrijk
De functie Frasenlijst is beschikbaar in de volgende talen: en-US, de-DE, en-AU, en-CA, en-GB, en-IN, es-ES, fr-FR, it-IT, ja-JP, pt-BR, zh-CN
De functie Frasenlijst moet worden gebruikt met niet meer dan een paar honderd woordgroepen. Als u een grotere lijst hebt of voor talen die momenteel niet worden ondersteund, is het trainen van een aangepast model waarschijnlijk de betere keuze om de nauwkeurigheid te verbeteren.
De functie Frasenlijst wordt niet ondersteund met aangepaste eindpunten. Gebruik deze niet met aangepaste eindpunten. Train in plaats daarvan een aangepast model dat de zinnen bevat.
Als u een frasenlijst wilt gebruiken, maakt u eerst een PhraseListGrammar-object, en voegt u vervolgens specifieke woorden en frasen toe met addPhrase.
Wijzigingen in PhraseListGrammar worden van kracht bij de volgende herkenning of na het opnieuw verbinden met de spraakservice.
phrase_list_grammar = speechsdk.PhraseListGrammar.from_recognizer(reco)
phrase_list_grammar.addPhrase("Supercalifragilisticexpialidocious")
Als u uw frasenlijst wilt wissen:
phrase_list_grammar.clear()
Andere opties voor het verbeteren van de nauwkeurigheid van de herkenning
Frasenlijsten zijn maar één optie om de nauwkeurigheid van de herkenning te verbeteren. U kunt ook het volgende doen:
In deze quickstart leert u hoe u spraak naar tekst kunt converteren met behulp van de Speech-service en cURL.
Zie het artikel Overzicht voor een diepgaande bespreking van de concepten van spraak-naar-tekst.
Vereisten
In dit artikel wordt ervan uitgegaan dat u een Azure-account en een abonnement op de Speech-service hebt. Als u geen account en abonnement hebt, kunt u de Speech-service gratis uitproberen.
Spraak naar tekst converteren
Voer de volgende opdracht uit op een opdrachtprompt. U moet de volgende waarden in de opdracht gebruiken.
- De abonnementssleutel voor de Speech-service.
- De regio voor de Speech-service.
- Het bestandspad voor audio-invoer. U kunt audiobestanden genereren met tekst-naar-spraak.
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'
U zou een antwoord moeten krijgen dat lijkt op het volgende:
{
"RecognitionStatus": "Success",
"DisplayText": "My voice is my passport, verify me.",
"Offset": 6600000,
"Duration": 32100000
}
Zie voor meer informatie de naslaghandleidingvoor de REST-API voor spraak-naar-tekst.
Een van de belangrijkste functies van de Speech-service is de mogelijkheid om menselijke spraak te herkennen en te transcriberen (ook wel spraak-naar-tekst genoemd). In deze quickstart leert u meer over het gebruik van de Speech-CLI in uw apps en producten om spraak-naar-tekst-conversie van hoge kwaliteit uit te voeren.
Downloaden en installeren
Volg deze stappen om de Speech CLI te installeren voor Windows:
In Windows hebt u het Microsoft Visual C++ Redistributable for Visual Studio 2019 voor uw platform nodig. Bij een eerste installatie is mogelijk een herstart vereist.
Installeer .NET Core 3.1 SDK.
Installeer de Speech CLI met NuGet door deze opdracht in te voeren:
dotnet tool install --global Microsoft.CognitiveServices.Speech.CLI
Typ spx om Help weer te geven voor de Speech CLI.
Notitie
Als alternatief voor NuGet kunt u de Speech CLI voor een Windows downloaden en uitpakken als zip-bestand.
Lettertypebeperkingen
In Windows kan de Speech CLI alleen de lettertypen weergeven die beschikbaar zijn voor de opdrachtprompt op de lokale computer. Windows Terminal ondersteunt alle lettertypen die interactief worden gemaakt door de Speech CLI.
Als u naar een bestand uitvoert, kunnen in een teksteditor zoals Kladblok of een webbrowser zoals Microsoft Edge ook alle lettertypen worden weergegeven.
Spraak naar tekst vanuit een microfoon
Sluit de microfoon van uw pc aan en schakel deze in. Schakel alle apps uit die mogelijk ook gebruikmaken van de microfoon. Sommige computers hebben een ingebouwde microfoon, terwijl andere een Bluetooth-apparaat moeten configureren.
Nu bent u klaar om de Speech-CLI uit te voeren om tekst te herkennen uit uw microfoon. Gebruik de opdrachtregel om de map waarin het binair Speech CLI-bestand zich bevindt te veranderen en voer de volgende opdracht uit.
spx recognize --microphone
Notitie
De Speech-CLI wordt standaard ingesteld op Engels. U kunt een andere taal kiezen in de tabel met spraak-naar-tekst.
Voeg bijvoorbeeld --source de-DE toe om Duitse spraak te herkennen.
Praat in de microfoon en u ziet transcriptie van uw woorden in realtime. De Speech-CLI stopt na een periode van stilte of wanneer u op Ctrl + C drukt.
Spraak naar tekst vanuit een audiobestand
De Speech-CLI kan spraak herkennen uit veel bestandsindelingen en natuurlijke talen. In dit voorbeeld kunt u een WAV-bestand (16 kHz of 8 kHz, 16-bits en mono PCM) gebruiken dat Engelse spraak bevat. Of als u een sne voorbeeld wilt, moet u de whatstheweatherlike.wav -bestand downloaden en kopiëren naar dezelfde map als het binaire bestand met de Speechspraak-CLI.
U bent nu klaar om de Speech-CLI uit te voeren om spraak te herkennen in het audiobestand door de volgende opdracht uit te voeren.
spx recognize --file whatstheweatherlike.wav
Notitie
De Speech-CLI wordt standaard ingesteld op Engels. U kunt een andere taal kiezen in de tabel met spraak-naar-tekst.
Voeg bijvoorbeeld --source de-DE toe om Duitse spraak te herkennen.
De Speech-CLI geeft een transcriptie van tekst van de spraak op het scherm.
Volgende stappen
- Met een codec gecomprimeerde audio-indelingen gebruiken
- Bekijk de Quickstart-voorbeelden op GitHub