Google语音文本API,InvalidArgument:400必须使用单通道(单声道)

时间:2019-03-11 16:39:22

标签: python google-cloud-speech

我在Google语音转文本中不断收到此错误InvalidArgument: 400,问题似乎是我正在使用2声道音频(立体声),而API正在等待(单声道)中的wav )。

如果我在音频编辑器中转换文件可能会起作用,但是我不能使用音频编辑器来转换一批文件。有没有办法在Python或Google Cloud中更改音频类型。

注意:我已经尝试使用“ wave模块”,但是由于文件类型无法识别,我一直收到错误#7(我无法用Python的模块wave读取wav文件)

  

-错误-InvalidArgument:400必须使用单声道(单声道)音频,但是WAV标头指示2个声道。

2 个答案:

答案 0 :(得分:1)

假设您正在使用google-cloud-speech库,则可以在recognitionConfig中使用audio_channel_count属性,并指定输入音频数据中的声道数(默认为一个声道) (单声道))。您可以执行以下操作:

from google.cloud import speech
client = speech.SpeechClient()
results = client.recognize(
    audio=speech.types.RecognitionAudio(
        uri='gs://your-bucket/recording.wav',
    ),
    config=speech.types.RecognitionConfig(
        encoding='LINEAR16',
        language_code='en-US',
        sample_rate_hertz=44100,
        audio_channel_count=2,
    ),
)

有关更多信息,请参见API doc

答案 1 :(得分:1)

您应该使用以下函数动态返回Audio Chanel和frame_rate 它采用音频文件路径并返回Chanel的帧频和数量

def frame_rate_channel(audio_file_name): print(audio_file_name) with wave.open(audio_file_name, "rb") as wave_file: frame_rate = wave_file.getframerate() channels = wave_file.getnchannels() return frame_rate,channels