So verwenden Sie komprimierte Eingabeaudio

Speech-to-Text REST API Referenz | Speech-to-Text REST API für kurze Audioreferenzen | Zusätzliche Beispiele auf GitHub

Verfügbarkeit

Sie können die REST-API für komprimierte Audiodaten verwenden, aber wir haben hier noch keine Anleitung enthalten. Wählen Sie eine andere Programmiersprache aus, um zu beginnen, und erfahren Sie mehr über die Konzepte.

Reference-Dokumentation | Package (PyPi) | Additional samples on GitHub

Das Speech SDK und die Speech CLI verwenden GStreamer, um verschiedene Arten von Eingabeaudioformaten zu unterstützen. GStreamer dekomprimiert die Audiodaten, bevor sie über das Kabel an den Sprachdienst als unformatiertes PCM gesendet wird.

Das standardmäßige Audiostreamingformat ist WAV (16 kHz oder 8 kHz, 16-Bit und Mono-PCM). Außerhalb von WAV und PCM werden die folgenden komprimierten Eingabeformate auch über GStreamer unterstützt:

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW im WAV-Container
  • MULAW im WAV-Container
  • ANY für MP4-Container oder unbekanntes Medienformat

GStreamer-Konfiguration

Das Speech SDK kann GStreamer verwenden, um komprimierte Audiodaten zu verarbeiten. Aus Lizenzierungsgründen werden GStreamer-Binärdateien nicht kompiliert und mit dem Speech SDK verknüpft. Sie müssen einige Abhängigkeiten und Plug-Ins installieren.

GStreamer-Binärdateien müssen sich im Systempfad befinden, damit sie vom Speech SDK zur Laufzeit geladen werden können. Windows Wenn das Speech SDK beispielsweise libgstreamer-1.0-0.dll oder gstreamer-1.0-0.dll (für den neuesten GStreamer) während der Laufzeit findet, bedeutet dies, dass sich die GStreamer-Binärdateien im Systempfad befinden.

Wählen Sie eine Plattform für Installationsanweisungen aus.

Sie müssen mehrere Abhängigkeiten und Plug-Ins installieren.

sudo apt install libgstreamer1.0-0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly

Weitere Informationen finden Sie in den Linux-Installationsanweisungen und unterstützten Linux-Distributionen und Zielarchitekturen.

Beispiel

Um das Speech SDK so zu konfigurieren, dass komprimierte Audioeingaben akzeptiert werden, erstellen PullAudioInputStream oder PushAudioInputStream. Erstellen Sie dann eine AudioConfig Aus einer Instanz Ihrer Streamklasse, die das Komprimierungsformat des Datenstroms angibt.

Angenommen, Ihr Anwendungsfall besteht darin, PullStream für eine MP3 Datei zu verwenden. Ihr Code sieht möglicherweise wie folgt aus:


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)

Reference-Dokumentation | Package (NuGet) | Additional samples on GitHub

Das Speech SDK und die Speech CLI verwenden GStreamer, um verschiedene Arten von Eingabeaudioformaten zu unterstützen. GStreamer dekomprimiert die Audiodaten, bevor sie über das Kabel an den Sprachdienst als unformatiertes PCM gesendet wird.

Das standardmäßige Audiostreamingformat ist WAV (16 kHz oder 8 kHz, 16-Bit und Mono-PCM). Außerhalb von WAV und PCM werden die folgenden komprimierten Eingabeformate auch über GStreamer unterstützt:

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW im WAV-Container
  • MULAW im WAV-Container
  • ANY für MP4-Container oder unbekanntes Medienformat

GStreamer-Konfiguration

Das Speech SDK kann GStreamer verwenden, um komprimierte Audiodaten zu verarbeiten. Aus Lizenzierungsgründen werden GStreamer-Binärdateien nicht kompiliert und mit dem Speech SDK verknüpft. Sie müssen einige Abhängigkeiten und Plug-Ins installieren.

GStreamer-Binärdateien müssen sich im Systempfad befinden, damit sie vom Speech SDK zur Laufzeit geladen werden können. Windows Wenn das Speech SDK beispielsweise libgstreamer-1.0-0.dll oder gstreamer-1.0-0.dll (für den neuesten GStreamer) während der Laufzeit findet, bedeutet dies, dass sich die GStreamer-Binärdateien im Systempfad befinden.

Wählen Sie eine Plattform für Installationsanweisungen aus.

Sie müssen mehrere Abhängigkeiten und Plug-Ins installieren.

sudo apt install libgstreamer1.0-0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly

Weitere Informationen finden Sie in den Linux-Installationsanweisungen und unterstützten Linux-Distributionen und Zielarchitekturen.

Beispiel

Um das Speech SDK so zu konfigurieren, dass komprimierte Audioeingaben akzeptiert werden, erstellen PullAudioInputStream oder PushAudioInputStream. Erstellen Sie dann eine AudioConfig Aus einer Instanz Ihrer Streamklasse, die das Komprimierungsformat des Datenstroms angibt. Suchen Sie verwandte Beispielcodeausschnitte in der Audioeingabestream-API des Speech SDK.

Angenommen, Sie haben eine Eingabestream-Klasse mit dem Namen pullStream bei dem Sie OPUS/OGG verwenden. Ihr Code sieht möglicherweise wie folgt aus:

using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

// ... omitted for brevity

var speechConfig =
    SpeechConfig.FromSubscription(
        "YourSpeechResoureKey",
        "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;

Reference-Dokumentation | Package (npm) | Zusätzliche Beispiele auf GitHub | Library Quellcode

Das Speech SDK für JavaScript unterstützt keine komprimierten Audiodaten.

Das standardmäßige Audiostreamingformat ist WAV (16 kHz oder 8 kHz, 16-Bit und Mono-PCM). Um eine komprimierte Audiodatei (z. B. mp3) einzugeben, müssen Sie sie zuerst in eine WAV-Datei im Standardeingabeformat konvertieren. Um komprimierte Audiodaten zu streamen, müssen Sie zuerst die Audiopuffer mit dem Standardeingabeformat decodieren. Weitere Informationen finden Sie unter Verwenden des Audioeingabedatenstroms.

Referenzdokumentation | Weitere Beispiele auf GitHub

Das Speech SDK und die Speech CLI verwenden GStreamer, um verschiedene Arten von Eingabeaudioformaten zu unterstützen. GStreamer dekomprimiert die Audiodaten, bevor sie über das Kabel an den Sprachdienst als unformatiertes PCM gesendet wird.

Das standardmäßige Audiostreamingformat ist WAV (16 kHz oder 8 kHz, 16-Bit und Mono-PCM). Außerhalb von WAV und PCM werden die folgenden komprimierten Eingabeformate auch über GStreamer unterstützt:

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW im WAV-Container
  • MULAW im WAV-Container
  • ANY für MP4-Container oder unbekanntes Medienformat

GStreamer-Konfiguration

Das Speech SDK kann GStreamer verwenden, um komprimierte Audiodaten zu verarbeiten. Aus Lizenzierungsgründen werden GStreamer-Binärdateien nicht kompiliert und mit dem Speech SDK verknüpft. Sie müssen einige Abhängigkeiten und Plug-Ins installieren.

GStreamer-Binärdateien müssen sich im Systempfad befinden, damit sie vom Speech SDK zur Laufzeit geladen werden können. Windows Wenn das Speech SDK beispielsweise libgstreamer-1.0-0.dll oder gstreamer-1.0-0.dll (für den neuesten GStreamer) während der Laufzeit findet, bedeutet dies, dass sich die GStreamer-Binärdateien im Systempfad befinden.

Wählen Sie eine Plattform für Installationsanweisungen aus.

Die Verarbeitung komprimierter Audiodaten wird mithilfe von GStreamer implementiert. Aus Lizenzierungsgründen werden GStreamer-Binärdateien nicht kompiliert und mit dem Speech SDK verknüpft. Stattdessen müssen Sie die vordefinierten Binärdateien für Android verwenden. Informationen zum Herunterladen der vordefinierten Bibliotheken finden Sie unter Installieren für die Android-Entwicklung.

Das libgstreamer_android.so Objekt ist erforderlich. Stellen Sie sicher, dass alle GStreamer-Plug-Ins (aus der folgenden Datei Android.mk) in libgstreamer_android.so verknüpft sind. Wenn Sie das neueste Sprach-SDK (1.18.3 und höher) mit GStreamer Version 1.18.3 verwenden, muss auch libc++_shared.so von android ndk vorhanden sein.

GSTREAMER_PLUGINS := coreelements app audioconvert mpg123 \
    audioresample audioparsers ogg opusparse \
    opus wavparse alaw mulaw flac

Hier werden ein Beispiel Android.mk und eine Application.mk Datei bereitgestellt. Führen Sie die folgenden Schritte aus, um das gstreamer freigegebene Objekt zu erstellen: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

Sie können libgstreamer_android.so mit dem folgenden Befehl unter Ubuntu 18.04 oder 20.04 erstellen. Die folgenden Befehlszeilen wurden für [GStreamer Android Version 1.14.4] mit Android NDK b16b getestet.

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

Nachdem das freigegebene Objekt (libgstreamer_android.so) erstellt wurde, platzieren Sie das freigegebene Objekt in der Android-App, damit es vom Speech SDK geladen werden kann.

Beispiel

Um das Speech SDK so zu konfigurieren, dass komprimierte Audioeingaben akzeptiert werden, erstellen Sie ein PullAudioInputStream oder PushAudioInputStream. Erstellen Sie dann eine AudioConfig Aus einer Instanz Ihrer Streamklasse, die das Komprimierungsformat des Datenstroms angibt. Suchen Sie verwandten Beispielcode in Speech SDK-Beispiele.

Nehmen wir an, Sie haben eine Eingabedatenstromklasse mit dem Namen pullAudio und verwenden MP3. Ihr Code sieht möglicherweise wie folgt aus:

String filePath = "whatstheweatherlike.mp3";
PullAudioInputStream pullAudio = AudioInputStream.createPullStream(new BinaryAudioStreamReader(filePath),
    AudioStreamFormat.getCompressedFormat(AudioStreamContainerFormat.MP3));
AudioConfig audioConfig = AudioConfig.fromStreamInput(pullAudio);

Reference-Dokumentation | Package (NuGet) | Additional samples on GitHub

Das Speech SDK und die Speech CLI verwenden GStreamer, um verschiedene Arten von Eingabeaudioformaten zu unterstützen. GStreamer dekomprimiert die Audiodaten, bevor sie über das Kabel an den Sprachdienst als unformatiertes PCM gesendet wird.

Das standardmäßige Audiostreamingformat ist WAV (16 kHz oder 8 kHz, 16-Bit und Mono-PCM). Außerhalb von WAV und PCM werden die folgenden komprimierten Eingabeformate auch über GStreamer unterstützt:

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW im WAV-Container
  • MULAW im WAV-Container
  • ANY für MP4-Container oder unbekanntes Medienformat

GStreamer-Konfiguration

Das Speech SDK kann GStreamer verwenden, um komprimierte Audiodaten zu verarbeiten. Aus Lizenzierungsgründen werden GStreamer-Binärdateien nicht kompiliert und mit dem Speech SDK verknüpft. Sie müssen einige Abhängigkeiten und Plug-Ins installieren.

GStreamer-Binärdateien müssen sich im Systempfad befinden, damit sie vom Speech SDK zur Laufzeit geladen werden können. Windows Wenn das Speech SDK beispielsweise libgstreamer-1.0-0.dll oder gstreamer-1.0-0.dll (für den neuesten GStreamer) während der Laufzeit findet, bedeutet dies, dass sich die GStreamer-Binärdateien im Systempfad befinden.

Wählen Sie eine Plattform für Installationsanweisungen aus.

Sie müssen mehrere Abhängigkeiten und Plug-Ins installieren.

sudo apt install libgstreamer1.0-0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly

Weitere Informationen finden Sie in den Linux-Installationsanweisungen und unterstützten Linux-Distributionen und Zielarchitekturen.

Beispiel

Um das Speech SDK so zu konfigurieren, dass komprimierte Audioeingaben akzeptiert werden, erstellen PullAudioInputStream oder PushAudioInputStream. Erstellen Sie dann eine AudioConfig Aus einer Instanz Ihrer Streamklasse, die das Komprimierungsformat des Datenstroms angibt. Suchen Sie verwandten Beispielcode in Speech SDK-Beispiele.

Angenommen, Sie haben eine Eingabedatenstromklasse namens pushStream und verwenden OPUS/OGG. Ihr Code sieht möglicherweise wie folgt aus:

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

// ... omitted for brevity

 auto config =
    SpeechConfig::FromSubscription(
        "YourSpeechResoureKey",
        "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;

Reference-Dokumentation | Package (Go) | Additional samples on GitHub

Das Speech SDK und die Speech CLI verwenden GStreamer, um verschiedene Arten von Eingabeaudioformaten zu unterstützen. GStreamer dekomprimiert die Audiodaten, bevor sie über das Kabel an den Sprachdienst als unformatiertes PCM gesendet wird.

Das standardmäßige Audiostreamingformat ist WAV (16 kHz oder 8 kHz, 16-Bit und Mono-PCM). Außerhalb von WAV und PCM werden die folgenden komprimierten Eingabeformate auch über GStreamer unterstützt:

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW im WAV-Container
  • MULAW im WAV-Container
  • ANY für MP4-Container oder unbekanntes Medienformat

GStreamer-Konfiguration

Das Speech SDK kann GStreamer verwenden, um komprimierte Audiodaten zu verarbeiten. Aus Lizenzierungsgründen werden GStreamer-Binärdateien nicht kompiliert und mit dem Speech SDK verknüpft. Sie müssen einige Abhängigkeiten und Plug-Ins installieren.

Sie müssen mehrere Abhängigkeiten und Plug-Ins installieren.

sudo apt install libgstreamer1.0-0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly

Weitere Informationen finden Sie in den Linux-Installationsanweisungen und unterstützten Linux-Distributionen und Zielarchitekturen.

Beispiel

Um das Speech SDK so zu konfigurieren, dass komprimierte Audioeingaben akzeptiert werden, erstellen Sie ein PullAudioInputStream oder PushAudioInputStream. Erstellen Sie dann eine AudioConfig Aus einer Instanz Ihrer Streamklasse, die das Komprimierungsformat des Datenstroms angibt.

Im folgenden Beispiel nehmen wir an, dass Ihr Anwendungsfall darin besteht, PushStream für eine komprimierte Datei zu verwenden.


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

Reference-Dokumentation | Package (download) | Additional samples on GitHub

Das Speech SDK für Objective-C unterstützt keine komprimierten Audiodaten.

Das standardmäßige Audiostreamingformat ist WAV (16 kHz oder 8 kHz, 16-Bit und Mono-PCM). Um eine komprimierte Audiodatei (z. B. mp3) einzugeben, müssen Sie sie zuerst in eine WAV-Datei im Standardeingabeformat konvertieren. Um komprimierte Audiodaten zu streamen, müssen Sie zuerst die Audiopuffer mit dem Standardeingabeformat decodieren. Weitere Informationen finden Sie unter Verwenden des Audioeingabedatenstroms.

Das Speech SDK und die Speech CLI verwenden GStreamer, um verschiedene Arten von Eingabeaudioformaten zu unterstützen. GStreamer dekomprimiert die Audiodaten, bevor sie über das Kabel an den Sprachdienst als unformatiertes PCM gesendet wird.

Das standardmäßige Audiostreamingformat ist WAV (16 kHz oder 8 kHz, 16-Bit und Mono-PCM). Außerhalb von WAV und PCM werden die folgenden komprimierten Eingabeformate auch über GStreamer unterstützt:

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW im WAV-Container
  • MULAW im WAV-Container
  • ANY für MP4-Container oder unbekanntes Medienformat

GStreamer-Konfiguration

Die Speech CLI kann GStreamer verwenden, um komprimierte Audiodaten zu verarbeiten. Aus Lizenzierungsgründen werden GStreamer-Binärdateien nicht kompiliert und mit der Speech CLI verknüpft. Sie müssen einige Abhängigkeiten und Plug-Ins installieren.

GStreamer-Binärdateien müssen sich im Systempfad befinden, damit sie zur Laufzeit von der Speech CLI geladen werden können. Windows Wenn die Speech CLI beispielsweise libgstreamer-1.0-0.dll oder gstreamer-1.0-0.dll (für den neuesten GStreamer) während der Laufzeit findet, bedeutet dies, dass sich die GStreamer-Binärdateien im Systempfad befinden.

Wählen Sie eine Plattform für Installationsanweisungen aus.

Sie müssen mehrere Abhängigkeiten und Plug-Ins installieren.

sudo apt install libgstreamer1.0-0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly

Weitere Informationen finden Sie in den Linux-Installationsanweisungen und unterstützten Linux-Distributionen und Zielarchitekturen.

Beispiel

Die --format Option gibt das Containerformat für die erkannte Audiodatei an. Legen Sie für eine MP4-Datei das Format wie im folgenden Befehl dargestellt fest any :

spx recognize --file YourAudioFile.mp4 --format any

Führen Sie den folgenden Befehl aus, um eine Liste der unterstützten Audioformate abzurufen:

spx help recognize format

Reference-Dokumentation | Package (download) | Additional samples on GitHub

Das Speech SDK für Swift unterstützt keine komprimierten Audiodaten.

Das standardmäßige Audiostreamingformat ist WAV (16 kHz oder 8 kHz, 16-Bit und Mono-PCM). Um eine komprimierte Audiodatei (z. B. mp3) einzugeben, müssen Sie sie zuerst in eine WAV-Datei im Standardeingabeformat konvertieren. Um komprimierte Audiodaten zu streamen, müssen Sie zuerst die Audiopuffer mit dem Standardeingabeformat decodieren. Weitere Informationen finden Sie unter Verwenden des Audioeingabedatenstroms.

Nächste Schritte