Я пытаюсь сделать программу распознавания речи с NAudio. Я могу записать звук моей системы с помощью WasapiLoopbackCapture, но не могу передать его на AudioStream или WaveStream.
Я выполнил действия, описанные в этой статье, но не могу воспроизвести аудио
https://ourcodeworld.com/articles/read/702/how-to-record-the-audio-from-the-sound-card-system-audio-with-c-using-naudio-in-winforms
private SpeechSynthesizer speechsynth = new SpeechSynthesizer();
private SpeechRecognitionEngine receng = new SpeechRecognitionEngine();
private Choices choice = new Choices();
private WaveFileWriter RecordedAudioWriter = null;
private WasapiLoopbackCapture CaptureInstance = null;
private void DoStuff() {
WasapiLoopbackCapture CaptureInstance = new WasapiLoopbackCapture();
WaveFileWriter RecordedAudioWriter = new WaveFileWriter(@ "C:\1.wav", CaptureInstance.WaveFormat);
CaptureInstance.DataAvailable += (s, a) => {
RecordedAudioWriter.Write(a.Buffer, 0, a.BytesRecorded);
};
CaptureInstance.RecordingStopped += (s, a) => {
RecordedAudioWriter.Dispose();
RecordedAudioWriter = null;
CaptureInstance.Dispose();
};
CaptureInstance.StartRecording();
recorder = new WaveIn();
recorder.DataAvailable += RecorderOnDataAvailable;
bufferedWaveProvider = new BufferedWaveProvider(recorder.WaveFormat);
savingWaveProvider = new SavingWaveProvider(bufferedWaveProvider, "temp.wav");
player = new WaveOut();
player.Init(savingWaveProvider);
player.Play();
recorder.StartRecording();
choice.Add(new string[] {
"hello"
});
Grammar gr = new Grammar(new GrammarBuilder(choice));
receng.RequestRecognizerUpdate();
receng.LoadGrammar(gr);
receng.SpeechRecognized += new EventHandler < SpeechRecognizedEventArgs >(receng_SpeechRecognized);
receng.SetInputToAudioStream(STREAM, waveIn.WaveFormat);
receng.RecognizeAsync(RecognizeMode.Multiple);
}
Я должен иметь возможность захватывать звук в режиме реального времени и выводить его как AudioStream на вход распознавания речи.