Menggunakan Microsoft Audio Stack (MAS)

Speech SDK mengintegrasikan Microsoft Audio Stack (MAS), memungkinkan aplikasi atau produk apa pun menggunakan kemampuan pemrosesan audionya pada audio input. Lihat dokumentasi pemrosesan Audio untuk gambaran umum.

Dalam artikel ini, Anda akan mempelajari cara menggunakan Microsoft Audio Stack (MAS) dengan SDK Ucapan.

Penting

Pada Speech SDK untuk C++ dan C# v1.33.0 dan yang lebih baru, Microsoft.CognitiveServices.Speech.Extension.MAS paket harus diinstal untuk menggunakan Microsoft Audio Stack di Windows, dan di Linux jika Anda menginstal Speech SDK menggunakan NuGet.

Opsi default

Contoh ini menunjukkan cara menggunakan MAS dengan semua opsi peningkatan default pada input dari mikrofon default perangkat.

var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

var audioProcessingOptions = AudioProcessingOptions.Create(AudioProcessingConstants.AUDIO_INPUT_PROCESSING_ENABLE_DEFAULT);
var audioInput = AudioConfig.FromDefaultMicrophoneInput(audioProcessingOptions);

var recognizer = new SpeechRecognizer(speechConfig, audioInput);

Geometri mikrofon standar

Sampel ini menunjukkan cara menggunakan MAS dengan geometri mikrofon yang telah ditentukan sebelumnya pada perangkat input audio tertentu. Dalam contoh ini:

  • Opsi penyempurnaan - Penyempurnaan default diterapkan pada aliran audio input.
  • Geometri prasetel - Geometri prasetel mewakili susunan 2-mikrofon linier.
  • Perangkat input audio - ID perangkat input audio adalah hw:0,1. Untuk informasi selengkapnya tentang cara memilih perangkat input audio, lihat Cara: Memilih perangkat input audio dengan SDK Ucapan.
var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

var audioProcessingOptions = AudioProcessingOptions.Create(AudioProcessingConstants.AUDIO_INPUT_PROCESSING_ENABLE_DEFAULT, PresetMicrophoneArrayGeometry.Linear2);
var audioInput = AudioConfig.FromMicrophoneInput("hw:0,1", audioProcessingOptions);

var recognizer = new SpeechRecognizer(speechConfig, audioInput);

Geometri mikrofon kustom

Contoh ini menunjukkan cara menggunakan MAS dengan geometri mikrofon kustom pada perangkat input audio tertentu. Dalam contoh ini:

  • Opsi penyempurnaan - Penyempurnaan default diterapkan pada aliran audio input.
  • Geometri kustom - Geometri mikrofon kustom untuk array 7 mikrofon disediakan melalui koordinat mikrofon. Unit untuk koordinat adalah milimeter.
  • Input audio - Input audio berasal dari file, di mana audio di dalam file diharapkan berasal dari perangkat input audio yang sesuai dengan geometri kustom yang ditentukan.
var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

MicrophoneCoordinates[] microphoneCoordinates = new MicrophoneCoordinates[7]
{
    new MicrophoneCoordinates(0, 0, 0),
    new MicrophoneCoordinates(40, 0, 0),
    new MicrophoneCoordinates(20, -35, 0),
    new MicrophoneCoordinates(-20, -35, 0),
    new MicrophoneCoordinates(-40, 0, 0),
    new MicrophoneCoordinates(-20, 35, 0),
    new MicrophoneCoordinates(20, 35, 0)
};
var microphoneArrayGeometry = new MicrophoneArrayGeometry(MicrophoneArrayType.Planar, microphoneCoordinates);
var audioProcessingOptions = AudioProcessingOptions.Create(AudioProcessingConstants.AUDIO_INPUT_PROCESSING_ENABLE_DEFAULT, microphoneArrayGeometry, SpeakerReferenceChannel.LastChannel);
var audioInput = AudioConfig.FromWavFileInput("katiesteve.wav", audioProcessingOptions);

var recognizer = new SpeechRecognizer(speechConfig, audioInput);

Memilih peningkatan

Sampel ini menunjukkan cara menggunakan MAS dengan set kustom penyempurnaan pada audio input. Secara default, semua penyempurnaan diaktifkan tetapi ada opsi untuk menonaktifkan pengurangan reverberasi, peredam kebisingan, kontrol penguatan otomatis, dan pembatalan gema masing-masing dengan menggunakan AudioProcessingOptions.

Dalam contoh ini:

  • Opsi peningkatan - Pembatalan gema dan penekanan kebisingan dinonaktifkan, sementara semua peningkatan lainnya tetap diaktifkan.
  • Perangkat input audio - Perangkat input audio adalah mikrofon bawaan perangkat.
var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

var audioProcessingOptions = AudioProcessingOptions.Create(AudioProcessingConstants.AUDIO_INPUT_PROCESSING_DISABLE_ECHO_CANCELLATION | AudioProcessingConstants.AUDIO_INPUT_PROCESSING_DISABLE_NOISE_SUPPRESSION | AudioProcessingConstants.AUDIO_INPUT_PROCESSING_ENABLE_DEFAULT);
var audioInput = AudioConfig.FromDefaultMicrophoneInput(audioProcessingOptions);

var recognizer = new SpeechRecognizer(speechConfig, audioInput);

Menentukan sudut beamforming

Sampel ini menunjukkan cara menggunakan MAS dengan geometri mikrofon kustom dan sudut beamforming pada perangkat input audio tertentu. Dalam contoh ini:

  • Opsi penyempurnaan - Penyempurnaan default diterapkan pada aliran audio input.
  • Geometri kustom - Geometri mikrofon kustom untuk susunan 4 mikrofon disediakan dengan menentukan koordinat mikrofon. Unit untuk koordinat adalah milimeter.
  • Sudut beamforming - Sudut beamforming ditentukan untuk mengoptimalkan audio yang berasal dari rentang tersebut. Unit sudut adalah derajat.
  • Input audio - Input audio berasal dari aliran pendorongan, di mana audio dalam aliran diharapkan berasal dari perangkat input audio yang sesuai dengan geometri kustom yang ditentukan.

Dalam contoh kode berikut, sudut awal diatur ke 70 derajat dan sudut akhir diatur ke 110 derajat.

var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

MicrophoneCoordinates[] microphoneCoordinates = new MicrophoneCoordinates[4]
{
    new MicrophoneCoordinates(-60, 0, 0),
    new MicrophoneCoordinates(-20, 0, 0),
    new MicrophoneCoordinates(20, 0, 0),
    new MicrophoneCoordinates(60, 0, 0)
};
var microphoneArrayGeometry = new MicrophoneArrayGeometry(MicrophoneArrayType.Linear, 70, 110, microphoneCoordinates);
var audioProcessingOptions = AudioProcessingOptions.Create(AudioProcessingConstants.AUDIO_INPUT_PROCESSING_ENABLE_DEFAULT, microphoneArrayGeometry, SpeakerReferenceChannel.LastChannel);
var pushStream = AudioInputStream.CreatePushStream();
var audioInput = AudioConfig.FromStreamInput(pushStream, audioProcessingOptions);

var recognizer = new SpeechRecognizer(speechConfig, audioInput);

Saluran referensi untuk pembatalan gema

Microsoft Audio Stack memerlukan saluran referensi (juga dikenal sebagai saluran loopback) untuk melakukan pembatalan gema. Sumber saluran referensi bervariasi berdasarkan platform:

  • Windows - Saluran referensi dikumpulkan secara otomatis oleh SDK Ucapan jika opsi SpeakerReferenceChannel::LastChannel disediakan saat membuat AudioProcessingOptions.
  • Linux - ALSA (Arsitektur Suara Linux Tingkat Lanjut) harus dikonfigurasi untuk menyediakan aliran audio referensi sebagai saluran terakhir untuk perangkat input audio yang digunakan. ALSA dikonfigurasi selain menyediakan opsi SpeakerReferenceChannel::LastChannel ketika membuat AudioProcessingOptions.

Dukungan bahasa dan platform

Bahasa Platform Dokumen referensi
C++ Windows, Linux Dokumen C++
C# Windows, Linux Dokumen C#
Java Windows, Linux Dokumen Java

Langkah berikutnya

Siapkan lingkungan pengembangan