Gecomprimeerde invoeraudio gebruiken
Referentiedocumentatiepakket (NuGet) | Aanvullende voorbeelden op GitHub |
De Speech SDK en Speech CLI gebruiken GStreamer om verschillende soorten invoeraudioindelingen te ondersteunen. GStreamer decomprimeert de audio voordat deze via de kabel naar de Speech-service wordt verzonden als onbewerkte PCM.
De standaardindeling voor audiostreaming is WAV (16 kHz of 8 kHz, 16-bits en mono PCM). Buiten WAV en PCM worden de volgende gecomprimeerde invoerindelingen ook ondersteund via GStreamer:
- MP3
- OPUS/OGG
- FLAC
- ALAW in WAV-container
- MULAW in WAV-container
- ANY voor MP4-container of onbekende media-indeling
GStreamer-configuratie
De Speech SDK kan GStreamer gebruiken voor het verwerken van gecomprimeerde audio. Om licentieredenen worden binaire GStreamer-bestanden niet gecompileerd en gekoppeld aan de Speech SDK. U moet enkele afhankelijkheden en invoegtoepassingen installeren.
Binaire GStreamer-bestanden moeten zich in het systeempad bevinden, zodat ze tijdens runtime kunnen worden geladen door de Speech SDK. Als de Speech SDK bijvoorbeeld tijdens runtime zoekt libgstreamer-1.0-0.dll
of gstreamer-1.0-0.dll
(voor de meest recente GStreamer) in Windows, betekent dit dat de binaire GStreamer-bestanden zich in het systeempad bevinden.
Kies een platform voor installatie-instructies.
U moet verschillende afhankelijkheden en invoegtoepassingen installeren.
sudo apt install libgstreamer1.0-0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly
Zie installatie-instructies voor Linux en ondersteunde Linux-distributies en doelarchitecturen voor meer informatie.
Opmerking
Als u de Speech SDK wilt configureren voor het accepteren van gecomprimeerde audio-invoer, maakt PullAudioInputStream
u of PushAudioInputStream
. Maak vervolgens een AudioConfig
exemplaar van uw streamklasse dat de compressie-indeling van de stream aangeeft. Zoek gerelateerde voorbeeldcodefragmenten in About the Speech SDK audio input stream API.
Stel dat u een invoerstroomklasse hebt die wordt aangeroepen pullStream
en dat u OPUS/MSP gebruikt. Uw code ziet er mogelijk als volgt uit:
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;
// ... omitted for brevity
var speechConfig =
SpeechConfig.FromSubscription(
"YourSubscriptionKey",
"YourServiceRegion");
// Create an audio config specifying the compressed
// audio format and the instance of your input stream class.
var pullStream = AudioInputStream.CreatePullStream(
AudioStreamFormat.GetCompressedFormat(AudioStreamContainerFormat.OGG_OPUS));
var audioConfig = AudioConfig.FromStreamInput(pullStream);
using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);
var result = await recognizer.RecognizeOnceAsync();
var text = result.Text;
Referentiedocumentatiepakket (NuGet) | Aanvullende voorbeelden op GitHub |
De Speech SDK en Speech CLI gebruiken GStreamer om verschillende soorten invoeraudioindelingen te ondersteunen. GStreamer decomprimeert de audio voordat deze via de kabel naar de Speech-service wordt verzonden als onbewerkte PCM.
De standaardindeling voor audiostreaming is WAV (16 kHz of 8 kHz, 16-bits en mono PCM). Buiten WAV en PCM worden de volgende gecomprimeerde invoerindelingen ook ondersteund via GStreamer:
- MP3
- OPUS/OGG
- FLAC
- ALAW in WAV-container
- MULAW in WAV-container
- ANY voor MP4-container of onbekende media-indeling
GStreamer-configuratie
De Speech SDK kan GStreamer gebruiken voor het verwerken van gecomprimeerde audio. Om licentieredenen worden binaire GStreamer-bestanden niet gecompileerd en gekoppeld aan de Speech SDK. U moet enkele afhankelijkheden en invoegtoepassingen installeren.
Binaire GStreamer-bestanden moeten zich in het systeempad bevinden, zodat ze tijdens runtime kunnen worden geladen door de Speech SDK. Als de Speech SDK bijvoorbeeld tijdens runtime zoekt libgstreamer-1.0-0.dll
of gstreamer-1.0-0.dll
(voor de meest recente GStreamer) in Windows, betekent dit dat de binaire GStreamer-bestanden zich in het systeempad bevinden.
Kies een platform voor installatie-instructies.
U moet verschillende afhankelijkheden en invoegtoepassingen installeren.
sudo apt install libgstreamer1.0-0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly
Zie installatie-instructies voor Linux en ondersteunde Linux-distributies en doelarchitecturen voor meer informatie.
Opmerking
Als u de Speech SDK wilt configureren voor het accepteren van gecomprimeerde audio-invoer, maakt PullAudioInputStream
u of PushAudioInputStream
. Maak vervolgens een AudioConfig
exemplaar van uw streamklasse dat de compressie-indeling van de stream aangeeft. Zoek gerelateerde voorbeeldcode in Speech SDK-voorbeelden.
Stel dat u een invoerstroomklasse hebt die wordt aangeroepen pushStream
en dat u OPUS/MSP gebruikt. Uw code ziet er mogelijk als volgt uit:
using namespace Microsoft::CognitiveServices::Speech;
using namespace Microsoft::CognitiveServices::Speech::Audio;
// ... omitted for brevity
auto config =
SpeechConfig::FromSubscription(
"YourSubscriptionKey",
"YourServiceRegion"
);
// Create an audio config specifying the compressed
// audio format and the instance of your input stream class.
auto pullStream = AudioInputStream::CreatePullStream(
AudioStreamFormat::GetCompressedFormat(AudioStreamContainerFormat::OGG_OPUS));
auto audioConfig = AudioConfig::FromStreamInput(pullStream);
auto recognizer = SpeechRecognizer::FromConfig(config, audioConfig);
auto result = recognizer->RecognizeOnceAsync().get();
auto text = result->Text;
Referentiedocumentatiepakket (Go) | Aanvullende voorbeelden op GitHub |
De Speech SDK en Speech CLI gebruiken GStreamer om verschillende soorten invoeraudioindelingen te ondersteunen. GStreamer decomprimeert de audio voordat deze via de kabel naar de Speech-service wordt verzonden als onbewerkte PCM.
De standaardindeling voor audiostreaming is WAV (16 kHz of 8 kHz, 16-bits en mono PCM). Buiten WAV en PCM worden de volgende gecomprimeerde invoerindelingen ook ondersteund via GStreamer:
- MP3
- OPUS/OGG
- FLAC
- ALAW in WAV-container
- MULAW in WAV-container
- ANY voor MP4-container of onbekende media-indeling
GStreamer-configuratie
De Speech SDK kan GStreamer gebruiken voor het verwerken van gecomprimeerde audio. Om licentieredenen worden binaire GStreamer-bestanden niet gecompileerd en gekoppeld aan de Speech SDK. U moet enkele afhankelijkheden en invoegtoepassingen installeren.
U moet verschillende afhankelijkheden en invoegtoepassingen installeren.
sudo apt install libgstreamer1.0-0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly
Zie installatie-instructies voor Linux en ondersteunde Linux-distributies en doelarchitecturen voor meer informatie.
Opmerking
Als u de Speech SDK wilt configureren voor het accepteren van gecomprimeerde audio-invoer, maakt u een PullAudioInputStream
of PushAudioInputStream
. Maak vervolgens een AudioConfig
exemplaar van uw streamklasse dat de compressie-indeling van de stream aangeeft.
In het volgende voorbeeld gaan we ervan uit dat uw use-case moet worden gebruikt PushStream
voor een gecomprimeerd bestand.
package recognizer
import (
"fmt"
"time"
"strings"
"github.com/Microsoft/cognitive-services-speech-sdk-go/audio"
"github.com/Microsoft/cognitive-services-speech-sdk-go/speech"
"github.com/Microsoft/cognitive-services-speech-sdk-go/samples/helpers"
)
func RecognizeOnceFromCompressedFile(subscription string, region string, file string) {
var containerFormat audio.AudioStreamContainerFormat
if strings.Contains(file, ".mulaw") {
containerFormat = audio.MULAW
} else if strings.Contains(file, ".alaw") {
containerFormat = audio.ALAW
} else if strings.Contains(file, ".mp3") {
containerFormat = audio.MP3
} else if strings.Contains(file, ".flac") {
containerFormat = audio.FLAC
} else if strings.Contains(file, ".opus") {
containerFormat = audio.OGGOPUS
} else {
containerFormat = audio.ANY
}
format, err := audio.GetCompressedFormat(containerFormat)
if err != nil {
fmt.Println("Got an error: ", err)
return
}
defer format.Close()
stream, err := audio.CreatePushAudioInputStreamFromFormat(format)
if err != nil {
fmt.Println("Got an error: ", err)
return
}
defer stream.Close()
audioConfig, err := audio.NewAudioConfigFromStreamInput(stream)
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, ")")
})
helpers.PumpFileIntoStream(file, stream)
task := speechRecognizer.RecognizeOnceAsync()
var outcome speech.SpeechRecognitionOutcome
select {
case outcome = <-task:
case <-time.After(40 * 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)
}
Referentiedocumentatie | Aanvullende voorbeelden op GitHub
De Speech SDK en Speech CLI gebruiken GStreamer om verschillende soorten invoeraudioindelingen te ondersteunen. GStreamer decomprimeert de audio voordat deze via de kabel naar de Speech-service wordt verzonden als onbewerkte PCM.
De standaardindeling voor audiostreaming is WAV (16 kHz of 8 kHz, 16-bits en mono PCM). Buiten WAV en PCM worden de volgende gecomprimeerde invoerindelingen ook ondersteund via GStreamer:
- MP3
- OPUS/OGG
- FLAC
- ALAW in WAV-container
- MULAW in WAV-container
- ANY voor MP4-container of onbekende media-indeling
GStreamer-configuratie
De Speech SDK kan GStreamer gebruiken voor het verwerken van gecomprimeerde audio. Om licentieredenen worden binaire GStreamer-bestanden niet gecompileerd en gekoppeld aan de Speech SDK. U moet enkele afhankelijkheden en invoegtoepassingen installeren.
Binaire GStreamer-bestanden moeten zich in het systeempad bevinden, zodat ze tijdens runtime kunnen worden geladen door de Speech SDK. Als de Speech SDK bijvoorbeeld tijdens runtime zoekt libgstreamer-1.0-0.dll
of gstreamer-1.0-0.dll
(voor de meest recente GStreamer) in Windows, betekent dit dat de binaire GStreamer-bestanden zich in het systeempad bevinden.
Kies een platform voor installatie-instructies.
Het verwerken van gecomprimeerde audio wordt geïmplementeerd met behulp van GStreamer. Om licentieredenen worden binaire GStreamer-bestanden niet gecompileerd en gekoppeld aan de Speech SDK. In plaats daarvan moet u de vooraf gemaakte binaire bestanden voor Android gebruiken. Zie Installeren voor Android-ontwikkeling om de vooraf gemaakte bibliotheken te downloaden.
Het libgstreamer_android.so
object is vereist. Zorg ervoor dat alle GStreamer-invoegtoepassingen (uit het volgende Android.mk-bestand) zijn gekoppeld.libgstreamer_android.so
Wanneer u de Speech SDK gebruikt met GStreamer versie 1.18.3, libc++_shared.so
moet u ook aanwezig zijn vanuit Android ndk.
GSTREAMER_PLUGINS := coreelements app audioconvert mpg123 \
audioresample audioparsers ogg opusparse \
opus wavparse alaw mulaw flac
Hier ziet u een voorbeeld Android.mk
en Application.mk
bestand. Volg deze stappen om het gstreamer
gedeelde object te maken:libgstreamer_android.so
.
# Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := dummy
LOCAL_SHARED_LIBRARIES := gstreamer_android
include $(BUILD_SHARED_LIBRARY)
ifndef GSTREAMER_ROOT_ANDROID
$(error GSTREAMER_ROOT_ANDROID is not defined!)
endif
ifndef APP_BUILD_SCRIPT
$(error APP_BUILD_SCRIPT is not defined!)
endif
ifndef TARGET_ARCH_ABI
$(error TARGET_ARCH_ABI is not defined!)
endif
ifeq ($(TARGET_ARCH_ABI),armeabi)
GSTREAMER_ROOT := $(GSTREAMER_ROOT_ANDROID)/arm
else ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
GSTREAMER_ROOT := $(GSTREAMER_ROOT_ANDROID)/armv7
else ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
GSTREAMER_ROOT := $(GSTREAMER_ROOT_ANDROID)/arm64
else ifeq ($(TARGET_ARCH_ABI),x86)
GSTREAMER_ROOT := $(GSTREAMER_ROOT_ANDROID)/x86
else ifeq ($(TARGET_ARCH_ABI),x86_64)
GSTREAMER_ROOT := $(GSTREAMER_ROOT_ANDROID)/x86_64
else
$(error Target arch ABI not supported: $(TARGET_ARCH_ABI))
endif
GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_ROOT)/share/gst-android/ndk-build/
include $(GSTREAMER_NDK_BUILD_PATH)/plugins.mk
GSTREAMER_PLUGINS := $(GSTREAMER_PLUGINS_CORE) \
$(GSTREAMER_PLUGINS_CODECS) \
$(GSTREAMER_PLUGINS_PLAYBACK) \
$(GSTREAMER_PLUGINS_CODECS_GPL) \
$(GSTREAMER_PLUGINS_CODECS_RESTRICTED)
GSTREAMER_EXTRA_LIBS := -liconv -lgstbase-1.0 -lGLESv2 -lEGL
include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk
# Application.mk
APP_STL = c++_shared
APP_PLATFORM = android-21
APP_BUILD_SCRIPT = Android.mk
U kunt bouwen libgstreamer_android.so
met behulp van de volgende opdracht op Ubuntu 18.04 of 20.04. De volgende opdrachtregels zijn getest op [GStreamer Android versie 1.14.4] met Android NDK b16b.
# Assuming wget and unzip are already installed on the system
mkdir buildLibGstreamer
cd buildLibGstreamer
wget https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip
unzip -q -o android-ndk-r16b-linux-x86_64.zip
export PATH=$PATH:$(pwd)/android-ndk-r16b
export NDK_PROJECT_PATH=$(pwd)/android-ndk-r16b
wget https://gstreamer.freedesktop.org/download/
mkdir gstreamer_android
tar -xjf gstreamer-1.0-android-universal-1.14.4.tar.bz2 -C $(pwd)/gstreamer_android/
export GSTREAMER_ROOT_ANDROID=$(pwd)/gstreamer_android
mkdir gstreamer
# Copy the Application.mk and Android.mk from the documentation above and put it inside $(pwd)/gstreamer
# Enable only one of the following at one time to create the shared object for the targeted ABI
echo "building for armeabi-v7a. libgstreamer_android.so will be placed in $(pwd)/armeabi-v7a"
ndk-build -C $(pwd)/gstreamer "NDK_APPLICATION_MK=Application.mk" APP_ABI=armeabi-v7a NDK_LIBS_OUT=$(pwd)
#echo "building for arm64-v8a. libgstreamer_android.so will be placed in $(pwd)/arm64-v8a"
#ndk-build -C $(pwd)/gstreamer "NDK_APPLICATION_MK=Application.mk" APP_ABI=arm64-v8a NDK_LIBS_OUT=$(pwd)
#echo "building for x86_64. libgstreamer_android.so will be placed in $(pwd)/x86_64"
#ndk-build -C $(pwd)/gstreamer "NDK_APPLICATION_MK=Application.mk" APP_ABI=x86_64 NDK_LIBS_OUT=$(pwd)
#echo "building for x86. libgstreamer_android.so will be placed in $(pwd)/x86"
#ndk-build -C $(pwd)/gstreamer "NDK_APPLICATION_MK=Application.mk" APP_ABI=x86 NDK_LIBS_OUT=$(pwd)
Nadat het gedeelde object (libgstreamer_android.so
) is gemaakt, plaatst u het gedeelde object in de Android-app, zodat de Speech SDK het kan laden.
Opmerking
Als u de Speech SDK wilt configureren voor het accepteren van gecomprimeerde audio-invoer, maakt u een PullAudioInputStream
of PushAudioInputStream
. Maak vervolgens een AudioConfig
exemplaar van uw streamklasse dat de compressie-indeling van de stream aangeeft. Zoek gerelateerde voorbeeldcode in Speech SDK-voorbeelden.
Stel dat u een invoerstroomklasse hebt die wordt aangeroepen pullAudio
en mp3 gebruikt. Uw code ziet er mogelijk als volgt uit:
String filePath = "whatstheweatherlike.mp3";
PullAudioInputStream pullAudio = AudioInputStream.createPullStream(new BinaryAudioStreamReader(filePath),
AudioStreamFormat.getCompressedFormat(AudioStreamContainerFormat.MP3));
AudioConfig audioConfig = AudioConfig.fromStreamInput(pullAudio);
Referentiedocumentatiepakket (npm) | Aanvullende voorbeelden in broncode van GitHub Library | |
De Speech SDK voor JavaScript biedt geen ondersteuning voor gecomprimeerde audio.
De standaardindeling voor audiostreaming is WAV (16 kHz of 8 kHz, 16-bits en mono PCM). Als u een gecomprimeerd audiobestand (zoals mp3) wilt invoeren, moet u het eerst converteren naar een WAV-bestand in de standaardinvoerindeling. Als u gecomprimeerde audio wilt streamen, moet u eerst de audiobuffers decoderen naar de standaardinvoerindeling. Zie De audio-invoerstroom gebruiken voor meer informatie.
Referentiedocumentatiepakket (download) | Aanvullende voorbeelden op GitHub |
De Speech SDK voor Objective-C biedt geen ondersteuning voor gecomprimeerde audio.
De standaardindeling voor audiostreaming is WAV (16 kHz of 8 kHz, 16-bits en mono PCM). Als u een gecomprimeerd audiobestand (zoals mp3) wilt invoeren, moet u het eerst converteren naar een WAV-bestand in de standaardinvoerindeling. Als u gecomprimeerde audio wilt streamen, moet u eerst de audiobuffers decoderen naar de standaardinvoerindeling. Zie De audio-invoerstroom gebruiken voor meer informatie.
Referentiedocumentatiepakket (download) | Aanvullende voorbeelden op GitHub |
De Speech SDK voor Swift biedt geen ondersteuning voor gecomprimeerde audio.
De standaardindeling voor audiostreaming is WAV (16 kHz of 8 kHz, 16-bits en mono PCM). Als u een gecomprimeerd audiobestand (zoals mp3) wilt invoeren, moet u het eerst converteren naar een WAV-bestand in de standaardinvoerindeling. Als u gecomprimeerde audio wilt streamen, moet u eerst de audiobuffers decoderen naar de standaardinvoerindeling. Zie De audio-invoerstroom gebruiken voor meer informatie.
Referentiedocumentatiepakket (PyPi) | Aanvullende voorbeelden op GitHub |
De Speech SDK en Speech CLI gebruiken GStreamer om verschillende soorten invoeraudioindelingen te ondersteunen. GStreamer decomprimeert de audio voordat deze via de kabel naar de Speech-service wordt verzonden als onbewerkte PCM.
De standaardindeling voor audiostreaming is WAV (16 kHz of 8 kHz, 16-bits en mono PCM). Buiten WAV en PCM worden de volgende gecomprimeerde invoerindelingen ook ondersteund via GStreamer:
- MP3
- OPUS/OGG
- FLAC
- ALAW in WAV-container
- MULAW in WAV-container
- ANY voor MP4-container of onbekende media-indeling
GStreamer-configuratie
De Speech SDK kan GStreamer gebruiken voor het verwerken van gecomprimeerde audio. Om licentieredenen worden binaire GStreamer-bestanden niet gecompileerd en gekoppeld aan de Speech SDK. U moet enkele afhankelijkheden en invoegtoepassingen installeren.
Binaire GStreamer-bestanden moeten zich in het systeempad bevinden, zodat ze tijdens runtime kunnen worden geladen door de Speech SDK. Als de Speech SDK bijvoorbeeld tijdens runtime zoekt libgstreamer-1.0-0.dll
of gstreamer-1.0-0.dll
(voor de meest recente GStreamer) in Windows, betekent dit dat de binaire GStreamer-bestanden zich in het systeempad bevinden.
Kies een platform voor installatie-instructies.
U moet verschillende afhankelijkheden en invoegtoepassingen installeren.
sudo apt install libgstreamer1.0-0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly
Zie installatie-instructies voor Linux en ondersteunde Linux-distributies en doelarchitecturen voor meer informatie.
Opmerking
Als u de Speech SDK wilt configureren voor het accepteren van gecomprimeerde audio-invoer, maakt PullAudioInputStream
u of PushAudioInputStream
. Maak vervolgens een AudioConfig
exemplaar van uw streamklasse dat de compressie-indeling van de stream aangeeft.
Stel dat uw use-case moet worden gebruikt PullStream
voor een MP3
bestand. Uw code ziet er mogelijk als volgt uit:
import azure.cognitiveservices.speech as speechsdk
class BinaryFileReaderCallback(speechsdk.audio.PullAudioInputStreamCallback):
def __init__(self, filename: str):
super().__init__()
self._file_h = open(filename, "rb")
def read(self, buffer: memoryview) -> int:
print('trying to read {} frames'.format(buffer.nbytes))
try:
size = buffer.nbytes
frames = self._file_h.read(size)
buffer[:len(frames)] = frames
print('read {} frames'.format(len(frames)))
return len(frames)
except Exception as ex:
print('Exception in `read`: {}'.format(ex))
raise
def close(self) -> None:
print('closing file')
try:
self._file_h.close()
except Exception as ex:
print('Exception in `close`: {}'.format(ex))
raise
def compressed_stream_helper(compressed_format,
mp3_file_path,
default_speech_auth):
callback = BinaryFileReaderCallback(mp3_file_path)
stream = speechsdk.audio.PullAudioInputStream(stream_format=compressed_format, pull_stream_callback=callback)
speech_config = speechsdk.SpeechConfig(**default_speech_auth)
audio_config = speechsdk.audio.AudioConfig(stream=stream)
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)
done = False
def stop_cb(evt):
"""callback that signals to stop continuous recognition upon receiving an event `evt`"""
print('CLOSING on {}'.format(evt))
nonlocal done
done = True
# Connect callbacks to the events fired by the speech recognizer
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)))
# stop continuous recognition on either session stopped or canceled events
speech_recognizer.session_stopped.connect(stop_cb)
speech_recognizer.canceled.connect(stop_cb)
# Start continuous speech recognition
speech_recognizer.start_continuous_recognition()
while not done:
time.sleep(.5)
speech_recognizer.stop_continuous_recognition()
def pull_audio_input_stream_compressed_mp3(mp3_file_path: str,
default_speech_auth):
# Create a compressed format
compressed_format = speechsdk.audio.AudioStreamFormat(compressed_stream_format=speechsdk.AudioStreamContainerFormat.MP3)
compressed_stream_helper(compressed_format, mp3_file_path, default_speech_auth)
Spraak-naar-tekst-REST API-verwijzing Speech to text REST API voor korte audioverwijzing | Aanvullende voorbeelden op GitHub |
U kunt de REST API gebruiken voor gecomprimeerde audio, maar we hebben hier nog geen handleiding opgenomen. Selecteer een andere programmeertaal om aan de slag te gaan en meer te weten te komen over de concepten.
De Speech SDK en Speech CLI gebruiken GStreamer om verschillende soorten invoeraudioindelingen te ondersteunen. GStreamer decomprimeert de audio voordat deze via de kabel naar de Speech-service wordt verzonden als onbewerkte PCM.
De standaardindeling voor audiostreaming is WAV (16 kHz of 8 kHz, 16-bits en mono PCM). Buiten WAV en PCM worden de volgende gecomprimeerde invoerindelingen ook ondersteund via GStreamer:
- MP3
- OPUS/OGG
- FLAC
- ALAW in WAV-container
- MULAW in WAV-container
- ANY voor MP4-container of onbekende media-indeling
GStreamer-configuratie
De Speech CLI kan GStreamer gebruiken om gecomprimeerde audio af te handelen. Om licentieredenen worden binaire GStreamer-bestanden niet gecompileerd en gekoppeld aan de Speech CLI. U moet enkele afhankelijkheden en invoegtoepassingen installeren.
Binaire GStreamer-bestanden moeten zich in het systeempad bevinden, zodat ze tijdens runtime door de Speech CLI kunnen worden geladen. Als in Windows bijvoorbeeld de Speech CLI tijdens runtime vindt libgstreamer-1.0-0.dll
of gstreamer-1.0-0.dll
(voor de meest recente GStreamer), betekent dit dat de binaire GStreamer-bestanden zich in het systeempad bevinden.
Kies een platform voor installatie-instructies.
U moet verschillende afhankelijkheden en invoegtoepassingen installeren.
sudo apt install libgstreamer1.0-0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly
Zie installatie-instructies voor Linux en ondersteunde Linux-distributies en doelarchitecturen voor meer informatie.
Opmerking
Met de --format
optie geeft u de containerindeling op voor het audiobestand dat wordt herkend. Voor een mp4-bestand stelt u de indeling any
in op zoals wordt weergegeven in de volgende opdracht:
spx recognize --file YourAudioFile.mp4 --format any
Voer de volgende opdracht uit om een lijst met ondersteunde audio-indelingen op te halen:
spx help recognize format