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

时间:2018-06-11 08:27:07

标签: c# google-speech-api

       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文件一起正常工作,但它会引发立体声文件的异常。例外是

  

状态(StatusCode = InvalidArgument,Detail =“必须使用单声道(单声道)音频,但WAV标头指示2个声道。”)

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

1 个答案:

答案 0 :(得分:0)

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

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

如果您希望完全控制音频,可以与bass.net.dll联系bass.dll,这样您就可以将频道混合在一起或选择特定的频道。