Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Speech SDK biedt een manier om audio naar de recognizer te streamen als alternatief voor microfoon of bestandsinvoer.
In deze handleiding wordt beschreven hoe u audio-invoerstromen gebruikt. Ook worden enkele van de vereisten en beperkingen van de audio-invoerstroom beschreven.
Bekijk meer voorbeelden van spraak-naar-tekstherkenning met audio-invoerstream op GitHub.
De indeling van de audiostream identificeren
De indeling van de audiostream identificeren.
Ondersteunde audiovoorbeelden zijn:
- PCM-indeling (int-16, ondertekend)
- Eén kanaal
- 16 bits per steekproef, 8.000 of 16.000 steekproeven per seconde (16.000 bytes of 32.000 bytes per seconde)
- Twee blokken uitgelijnd (16 bits inclusief opvulling voor een voorbeeld)
De bijbehorende code in de SDK voor het maken van de audio-indeling ziet er als volgt uit:
byte channels = 1;
byte bitsPerSample = 16;
int samplesPerSecond = 16000; // or 8000
var audioFormat = AudioStreamFormat.GetWaveFormatPCM(samplesPerSecond, bitsPerSample, channels);
Zorg ervoor dat uw code de RAW-audiogegevens levert op basis van deze specificaties. Zorg er ook voor dat 16-bits voorbeelden binnenkomen in de little-endian-indeling. Als uw audiobrongegevens niet overeenkomen met de ondersteunde indelingen, moet de audio in de vereiste indeling worden getranscodeerd.
Uw eigen audio-invoerstroomklasse maken
U kunt uw eigen audio-invoerstroomklasse maken die is afgeleid van PullAudioInputStreamCallback. Implementeer de Read() en Close() leden. De exacte functiehandtekening is afhankelijk van de taal, maar de code ziet er ongeveer als volgt uit:
public class ContosoAudioStream : PullAudioInputStreamCallback
{
public ContosoAudioStream() {}
public override int Read(byte[] buffer, uint size)
{
// Returns audio data to the caller.
// E.g., return read(config.YYY, buffer, size);
return 0;
}
public override void Close()
{
// Close and clean up resources.
}
}
Maak een audioconfiguratie op basis van uw audio-indeling en aangepaste audio-invoerstroom. Voorbeeld:
var audioConfig = AudioConfig.FromStreamInput(new ContosoAudioStream(), audioFormat);
Hier ziet u hoe de aangepaste audio-invoerstroom wordt gebruikt in de context van een spraakherkenningsfunctie:
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;
public class ContosoAudioStream : PullAudioInputStreamCallback
{
public ContosoAudioStream() {}
public override int Read(byte[] buffer, uint size)
{
// Returns audio data to the caller.
// E.g., return read(config.YYY, buffer, size);
return 0;
}
public override void Close()
{
// Close and clean up resources.
}
}
class Program
{
static string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY");
static string speechRegion = Environment.GetEnvironmentVariable("SPEECH_REGION");
async static Task Main(string[] args)
{
byte channels = 1;
byte bitsPerSample = 16;
uint samplesPerSecond = 16000; // or 8000
var audioFormat = AudioStreamFormat.GetWaveFormatPCM(samplesPerSecond, bitsPerSample, channels);
var audioConfig = AudioConfig.FromStreamInput(new ContosoAudioStream(), audioFormat);
var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion);
speechConfig.SpeechRecognitionLanguage = "en-US";
var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);
Console.WriteLine("Speak into your microphone.");
var speechRecognitionResult = await speechRecognizer.RecognizeOnceAsync();
Console.WriteLine($"RECOGNIZED: Text={speechRecognitionResult.Text}");
}
}