Отправка байтовых данных в Google Cloud Speech во время записи звука с помощью NAudio - PullRequest
0 голосов
/ 02 июня 2018

Я создаю простое приложение 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"));

Он работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...