Я создаю простое приложение WinForms для преобразования речи в текст.Это приложение прослушивает микрофон с помощью NAudio API и отправляет аудио в Google Cloud Speech API.Когда Google Cloud Speech API отвечает текстом, я добавляю этот текст в TextBox.Посмотрите код ниже:
async private void WaveIn_DataAvailable(object sender, WaveInEventArgs e)
{
await Task.Factory.StartNew(()=> { WriteToTextBox(e.Buffer); }, TaskCreationOptions.LongRunning);
}
void WriteToTextBox(byte[] bufferData)
{
var speech = SpeechClient.Create();
var response = speech.Recognize(new RecognitionConfig()
{
Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
SampleRateHertz = 16000,
LanguageCode = "en",
}, RecognitionAudio.FromBytes(bufferData));
foreach (var result in response.Results)
{
foreach (var alternative in result.Alternatives)
{
textBox1.Text = textBox1.Text + " " + alternative.Transcript;
}
}
}
Все работает нормально, за исключением того, что response.Results
всегда пусто.Но когда я сохраняю эти данные буфера в файл, а затем вызываю Google Cloud Speech API, используя следующий код:
var response = speech.Recognize(new RecognitionConfig()
{
Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
SampleRateHertz = 16000,
LanguageCode = "en",
}, RecognitionAudio.FromFile("audio.raw"));
Он работает нормально.