我在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