如何在 c# 中为 Google 语音识别 api 准备音频文件(wav 或 mp3)?

How to prepare audio files (wav or mp3) for Google speech recognition api in c#?

       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="Must use single channel (mono) audio, but WAV header indicates 2 channels.")

所以,我的问题是如何添加对立体声文件的支持?如何在 C# 中将多声道音频转换为单声道?我已经试过 this answer 所以请不要参考它。它不起作用。

您应该看看 sox,它几乎可以将任何格式转换成另一种格式,包括采样率转换,在您的情况下,有趣的是通道转换。在文档中,您可以找到许多有关如何使用它的示例。

在你的情况下,我建议不要只从音频中提取一个通道,因为这可能意味着所需的音频仅在另一个未 selected 的通道上。

如果您想完全控制音频,您可以深入研究 bass.dll 与 bass.net.dll 的联系,它允许您将频道混合在一起或 select 特定频道。