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 membuatAudioProcessingOptions
. - 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 membuatAudioProcessingOptions
.
Dukungan bahasa dan platform
Bahasa | Platform | Dokumen referensi |
---|---|---|
C++ | Windows, Linux | Dokumen C++ |
C# | Windows, Linux | Dokumen C# |
Java | Windows, Linux | Dokumen Java |