Google语音到文本API,无效:400必须使用单个通道(Mono)



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

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

注意:我已经尝试使用" Wave Module",但是我一直在获取文件类型的错误7(我无法使用Python的模块wave读取WAV文件)

-error-无效:400必须使用单个通道(单声道)音频,但WAV标头表示2个通道。

假设您使用的是 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文档。

您应该使用以下功能动态返回音频通道&帧速率。

它采用音频文件路径并返回帧速率和频道数量。

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

最新更新