Cara menggunakan audio input terkompresi

Dokumentasi referensi | Paket (NuGet) | Sampel Tambahan pada GitHub

SDK Ucapan dan CLI Ucapan menggunakan GStreamer untuk mendukung berbagai jenis format audio input. GStreamer mendekompresi audio sebelum dikirim melalui kabel ke layanan Ucapan sebagai PCM mentah.

Format streaming audio default adalah WAV (16 kHz atau 8 kHz, 16-bit, dan mono PCM). Selain WAV dan PCM, format input terkompresi berikut juga didukung melalui GStreamer:

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW dalam kontainer WAV
  • MULAW dalam kontainer WAV
  • ANY untuk kontainer MP4 atau format media yang tidak diketahui

Konfigurasi GStreamer

SDK Ucapan dapat menggunakan GStreamer untuk menangani audio terkompresi. Untuk alasan lisensi, biner GStreamer tidak dikompilasi dan ditautkan dengan SDK Ucapan. Anda perlu menginstal beberapa dependensi dan plug-in.

Biner GStreamer harus berada di jalur sistem sehingga dapat dimuat oleh SDK Ucapan saat runtime. Misalnya, pada Windows, jika SDK Ucapan menemukan libgstreamer-1.0-0.dll atau gstreamer-1.0-0.dll (untuk GStreamer terbaru) selama runtime, itu berarti biner GStreamer berada di jalur sistem.

Pilih platform untuk petunjuk penginstalan.

Anda perlu menginstal beberapa dependensi dan plug-in.

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

Untuk informasi selengkapnya, lihat instruksi penginstalan Linux dan distribusi Linux yang didukung dan arsitektur target.

Contoh

Untuk mengonfigurasi SDK Ucapan guna menerima input audio terkompresi, buat PullAudioInputStream atau PushAudioInputStream. Kemudian, buat AudioConfig dari instans kelas stream Anda yang menentukan format pemadatan stream. Temukan cuplikan kode sampel terkait di Tentang API aliran input audio Speech SDK.

Mari kita asumsikan bahwa Anda memiliki kelas input stream yang dipanggil pullStream dan menggunakan OPUS/OGG. Kode Anda mungkin terlihat seperti ini:

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;

Dokumentasi referensi | Paket (NuGet) | Sampel Tambahan pada GitHub

SDK Ucapan dan CLI Ucapan menggunakan GStreamer untuk mendukung berbagai jenis format audio input. GStreamer mendekompresi audio sebelum dikirim melalui kabel ke layanan Ucapan sebagai PCM mentah.

Format streaming audio default adalah WAV (16 kHz atau 8 kHz, 16-bit, dan mono PCM). Selain WAV dan PCM, format input terkompresi berikut juga didukung melalui GStreamer:

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW dalam kontainer WAV
  • MULAW dalam kontainer WAV
  • ANY untuk kontainer MP4 atau format media yang tidak diketahui

Konfigurasi GStreamer

SDK Ucapan dapat menggunakan GStreamer untuk menangani audio terkompresi. Untuk alasan lisensi, biner GStreamer tidak dikompilasi dan ditautkan dengan SDK Ucapan. Anda perlu menginstal beberapa dependensi dan plug-in.

Biner GStreamer harus berada di jalur sistem sehingga dapat dimuat oleh SDK Ucapan saat runtime. Misalnya, pada Windows, jika SDK Ucapan menemukan libgstreamer-1.0-0.dll atau gstreamer-1.0-0.dll (untuk GStreamer terbaru) selama runtime, itu berarti biner GStreamer berada di jalur sistem.

Pilih platform untuk petunjuk penginstalan.

Anda perlu menginstal beberapa dependensi dan plug-in.

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

Untuk informasi selengkapnya, lihat instruksi penginstalan Linux dan distribusi Linux yang didukung dan arsitektur target.

Contoh

Untuk mengonfigurasi SDK Ucapan guna menerima input audio terkompresi, buat PullAudioInputStream atau PushAudioInputStream. Kemudian, buat AudioConfig dari instans kelas stream Anda yang menentukan format pemadatan stream. Temukan sampel kode terkait di sampel SDK Ucapan.

Mari kita asumsikan bahwa Anda memiliki kelas input stream yang dipanggil pushStream dan menggunakan OPUS/OGG. Kode Anda mungkin terlihat seperti ini:

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;

Dokumentasi referensi | Paket (Go) | Sampel Tambahan pada GitHub

SDK Ucapan dan CLI Ucapan menggunakan GStreamer untuk mendukung berbagai jenis format audio input. GStreamer mendekompresi audio sebelum dikirim melalui kabel ke layanan Ucapan sebagai PCM mentah.

Format streaming audio default adalah WAV (16 kHz atau 8 kHz, 16-bit, dan mono PCM). Selain WAV dan PCM, format input terkompresi berikut juga didukung melalui GStreamer:

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW dalam kontainer WAV
  • MULAW dalam kontainer WAV
  • ANY untuk kontainer MP4 atau format media yang tidak diketahui

Konfigurasi GStreamer

SDK Ucapan dapat menggunakan GStreamer untuk menangani audio terkompresi. Untuk alasan lisensi, biner GStreamer tidak dikompilasi dan ditautkan dengan SDK Ucapan. Anda perlu menginstal beberapa dependensi dan plug-in.

Anda perlu menginstal beberapa dependensi dan plug-in.

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

Untuk informasi selengkapnya, lihat instruksi penginstalan Linux dan distribusi Linux yang didukung dan arsitektur target.

Contoh

Untuk mengonfigurasi SDK Speech guna menerima input audio terkompresi, buat PullAudioInputStream atau PushAudioInputStream. Kemudian, buat AudioConfig dari instans kelas stream Anda yang menentukan format pemadatan stream.

Dalam contoh berikut, mari kita asumsikan bahwa kasus penggunaan Anda adalah menggunakan PushStream untuk file terkompresi.


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

Dokumentasi referensi | Sampel Tambahan pada GitHub

SDK Ucapan dan CLI Ucapan menggunakan GStreamer untuk mendukung berbagai jenis format audio input. GStreamer mendekompresi audio sebelum dikirim melalui kabel ke layanan Ucapan sebagai PCM mentah.

Format streaming audio default adalah WAV (16 kHz atau 8 kHz, 16-bit, dan mono PCM). Selain WAV dan PCM, format input terkompresi berikut juga didukung melalui GStreamer:

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW dalam kontainer WAV
  • MULAW dalam kontainer WAV
  • ANY untuk kontainer MP4 atau format media yang tidak diketahui

Konfigurasi GStreamer

SDK Ucapan dapat menggunakan GStreamer untuk menangani audio terkompresi. Untuk alasan lisensi, biner GStreamer tidak dikompilasi dan ditautkan dengan SDK Ucapan. Anda perlu menginstal beberapa dependensi dan plug-in.

Biner GStreamer harus berada di jalur sistem sehingga dapat dimuat oleh SDK Ucapan saat runtime. Misalnya, pada Windows, jika SDK Ucapan menemukan libgstreamer-1.0-0.dll atau gstreamer-1.0-0.dll (untuk GStreamer terbaru) selama runtime, itu berarti biner GStreamer berada di jalur sistem.

Pilih platform untuk petunjuk penginstalan.

Penanganan audio terkompresi dilakukan dengan menggunakan GStreamer. Untuk alasan lisensi, biner GStreamer tidak dikompilasi dan ditautkan dengan SDK Ucapan. Sebagai gantinya, Anda harus menggunakan biner bawaan untuk Android. Untuk mengunduh pustaka bawaan, lihat Menginstal untuk pengembangan Android.

Objek libgstreamer_android.so diperlukan. Pastikan semua plug-in GStreamer (dari file Android.mk di bawah ini) ditautkan dalam libgstreamer_android.so. Saat Anda menggunakan SDK Ucapan dengan GStreamer versi 1.18.3, libc++_shared.so juga harus tersedia dari android ndk.

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

Contoh file Android.mk dan Application.mk disediakan di sini. Ikuti langkah-langkah berikut untuk membuat objek bersama gstreamer: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

Anda dapat membangun libgstreamer_android.so dengan menggunakan perintah berikut pada Ubuntu 18.04 atau 20.04. Baris perintah berikut telah diuji untuk [GStreamer Android versi 1.14.4] dengan 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)

Setelah objek bersama (libgstreamer_android.so) dibangun, letakkan objek bersama tersebut di aplikasi Android, sehingga SDK Ucapan dapat memuatnya.

Contoh

Untuk mengonfigurasi SDK Speech guna menerima input audio terkompresi, buat PullAudioInputStream atau PushAudioInputStream. Kemudian, buat AudioConfig dari instans kelas stream Anda yang menentukan format pemadatan stream. Temukan sampel kode terkait di sampel SDK Ucapan.

Mari kita asumsikan bahwa Anda memiliki kelas aliran input yang disebut pullAudio dan menggunakan MP3. Kode Anda mungkin terlihat seperti ini:

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

Dokumentasi referensi | Paket (npm) | Sampel Tambahan pada kode sumber GitHub | Library

Speech SDK untuk JavaScript tidak mendukung audio terkompresi.

Format streaming audio default adalah WAV (16 kHz atau 8 kHz, 16-bit, dan mono PCM). Untuk memasukkan file audio terkompresi (seperti mp3), Anda harus terlebih dahulu mengonversinya ke file WAV dalam format input default. Untuk mengalirkan audio terkompresi, Anda harus terlebih dahulu mendekode buffer audio ke format input default. Untuk informasi selengkapnya, lihat Cara menggunakan aliran input audio.

Dokumentasi referensi | Paket (Unduh) | Sampel Tambahan pada GitHub

SDK Ucapan untuk Objective-C tidak mendukung audio terkompresi.

Format streaming audio default adalah WAV (16 kHz atau 8 kHz, 16-bit, dan mono PCM). Untuk memasukkan file audio terkompresi (seperti mp3), Anda harus terlebih dahulu mengonversinya ke file WAV dalam format input default. Untuk mengalirkan audio terkompresi, Anda harus terlebih dahulu mendekode buffer audio ke format input default. Untuk informasi selengkapnya, lihat Cara menggunakan aliran input audio.

Dokumentasi referensi | Paket (Unduh) | Sampel Tambahan pada GitHub

SDK Ucapan untuk Swift tidak mendukung audio terkompresi.

Format streaming audio default adalah WAV (16 kHz atau 8 kHz, 16-bit, dan mono PCM). Untuk memasukkan file audio terkompresi (seperti mp3), Anda harus terlebih dahulu mengonversinya ke file WAV dalam format input default. Untuk mengalirkan audio terkompresi, Anda harus terlebih dahulu mendekode buffer audio ke format input default. Untuk informasi selengkapnya, lihat Cara menggunakan aliran input audio.

Dokumentasi referensi | Paket (PyPi) | Sampel Tambahan pada GitHub

SDK Ucapan dan CLI Ucapan menggunakan GStreamer untuk mendukung berbagai jenis format audio input. GStreamer mendekompresi audio sebelum dikirim melalui kabel ke layanan Ucapan sebagai PCM mentah.

Format streaming audio default adalah WAV (16 kHz atau 8 kHz, 16-bit, dan mono PCM). Selain WAV dan PCM, format input terkompresi berikut juga didukung melalui GStreamer:

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW dalam kontainer WAV
  • MULAW dalam kontainer WAV
  • ANY untuk kontainer MP4 atau format media yang tidak diketahui

Konfigurasi GStreamer

SDK Ucapan dapat menggunakan GStreamer untuk menangani audio terkompresi. Untuk alasan lisensi, biner GStreamer tidak dikompilasi dan ditautkan dengan SDK Ucapan. Anda perlu menginstal beberapa dependensi dan plug-in.

Biner GStreamer harus berada di jalur sistem sehingga dapat dimuat oleh SDK Ucapan saat runtime. Misalnya, pada Windows, jika SDK Ucapan menemukan libgstreamer-1.0-0.dll atau gstreamer-1.0-0.dll (untuk GStreamer terbaru) selama runtime, itu berarti biner GStreamer berada di jalur sistem.

Pilih platform untuk petunjuk penginstalan.

Anda perlu menginstal beberapa dependensi dan plug-in.

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

Untuk informasi selengkapnya, lihat instruksi penginstalan Linux dan distribusi Linux yang didukung dan arsitektur target.

Contoh

Untuk mengonfigurasi SDK Ucapan guna menerima input audio terkompresi, buat PullAudioInputStream atau PushAudioInputStream. Kemudian, buat AudioConfig dari instans kelas stream Anda yang menentukan format pemadatan stream.

Mari kita asumsikan bahwa kasus penggunaan Anda adalah menggunakan PullStream untuk file MP3. Kode Anda mungkin terlihat seperti ini:


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)

Ucapan ke teks REST API referensi | Ucapan ke teks REST API untuk referensi | audio singkat Sampel Tambahan di GitHub

Anda dapat menggunakan REST API untuk audio terkompresi, tetapi kami belum menyertakan panduan di sini. Silakan pilih bahasa pemrograman lain untuk memulai dan belajar tentang konsep.

SDK Ucapan dan CLI Ucapan menggunakan GStreamer untuk mendukung berbagai jenis format audio input. GStreamer mendekompresi audio sebelum dikirim melalui kabel ke layanan Ucapan sebagai PCM mentah.

Format streaming audio default adalah WAV (16 kHz atau 8 kHz, 16-bit, dan mono PCM). Selain WAV dan PCM, format input terkompresi berikut juga didukung melalui GStreamer:

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW dalam kontainer WAV
  • MULAW dalam kontainer WAV
  • ANY untuk kontainer MP4 atau format media yang tidak diketahui

Konfigurasi GStreamer

CLI Ucapan dapat menggunakan GStreamer untuk menangani audio terkompresi. Untuk alasan lisensi, biner GStreamer tidak dikompilasi dan ditautkan dengan CLI Ucapan. Anda perlu menginstal beberapa dependensi dan plug-in.

Biner GStreamer harus berada di jalur sistem sehingga dapat dimuat oleh CLI Ucapan saat runtime. Misalnya, pada Windows, jika CLI Ucapan menemukan libgstreamer-1.0-0.dll atau gstreamer-1.0-0.dll (untuk GStreamer terbaru) selama runtime, itu berarti biner GStreamer berada di jalur sistem.

Pilih platform untuk petunjuk penginstalan.

Anda perlu menginstal beberapa dependensi dan plug-in.

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

Untuk informasi selengkapnya, lihat instruksi penginstalan Linux dan distribusi Linux yang didukung dan arsitektur target.

Contoh

Opsi --format menentukan format kontainer untuk file audio yang dikenali. Untuk file mp4, atur format ke any seperti yang diperlihatkan dalam perintah berikut:

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

Untuk mendapatkan daftar format audio yang didukung, jalankan perintah berikut:

spx help recognize format

Langkah berikutnya