我在Google语音转文本中不断收到此错误InvalidArgument: 400
,问题似乎是我正在使用2声道音频(立体声),而API正在等待(单声道)中的wav )。
如果我在音频编辑器中转换文件可能会起作用,但是我不能使用音频编辑器来转换一批文件。有没有办法在Python或Google Cloud中更改音频类型。
注意:我已经尝试使用“ wave模块”,但是由于文件类型无法识别,我一直收到错误#7(我无法用Python的模块wave读取wav文件)
-错误-InvalidArgument:400必须使用单声道(单声道)音频,但是WAV标头指示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