Как подготовить аудио файлы (WAV или MP3) для Google распознавания речи API в C #? - PullRequest
0 голосов
/ 11 июня 2018
       String jsonRequest = "{\"config\": {\"languageCode\":\"en-US\"},\"audio\": {\"content\": \"" + base64Content+ "\"}}";
        String str = "";
        var speech = SpeechClient.Create();
        var response = 
        speech.Recognize(RecognizeRequest.Parser.ParseJson(jsonRequest));
        foreach (var result in response.Results)
        {
            foreach (var alternative in result.Alternatives)
            {
                Console.WriteLine(alternative.Transcript);
                str += alternative.Transcript;
            }
        }

Этот код отлично работает с монофоническими WAV-файлами, но он исключает стереофайлы.Исключение говорит:

Status (StatusCode = InvalidArgument, Detail = "Необходимо использовать одноканальный (моно) звук, но заголовок WAV указывает 2 канала.")

Итак,мой вопрос, как я могу добавить поддержку стерео файлов?Как конвертировать многоканальный звук в один канал в C #?Я уже попробовал этот ответ , поэтому, пожалуйста, не обращайтесь к нему.Это не работает.

1 Ответ

0 голосов
/ 11 июня 2018

Вам следует взглянуть на sox , который может конвертировать практически любой формат в другой, включая преобразование частоты дискретизации и, в вашем случае, интересное преобразование канала.В документации вы найдете много примеров того, как его использовать.

В вашем случае я бы не советовал просто извлекать один канал из аудио, потому что это может означать, что желаемый звук находится только на другом канале, который не выбран..

Если вы хотите иметь полный контроль над аудио, вы можете погрузиться в bass.dll в связке с bass.net.dll, что позволяет вам смешивать каналы вместе или выбирать определенныйканал.

...