如何解决#问题400指定FLAC编码以匹配文件头?

时间:2019-04-16 07:09:54

标签: python speech-recognition speech-to-text google-speech-api google-cloud-speech

我正在使用Google API进行语音转文本。

以下是我的python代码:

from google.cloud import speech_v1p1beta1 as speech

import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="C:\\Users\\chetan.patil\\Speech Recognition-db71b5de7c80.json" #Specified key

client=speech.SpeechClient()

speech_file="Chetan_Recording_20Secflac.flac" #import file

with open(speech_file,'rb') as audio_file:
    content=audio_file.read()
    audio=speech.types.RecognitionAudio(content=content)

config=speech.types.RecognitionConfig(encoding=speech.enums.RecognitionConfig.AudioEncoding.LINEAR16,
                                      language_code='en_US',enable_speaker_diarization=True,audio_channel_count=1,
                                      sample_rate_hertz=44100)

response = client.recognize(config, audio)

当我运行最后一行代码时。它给出错误为“ 400指定FLAC编码以匹配文件头”

即使我尝试使用.wav文件,其给出的错误也为“ 400必须使用单声道(单声道)音频,但WAV标头指示2个声道”

有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

  

当我运行最后一行代码时。它给出错误为“ 400指定FLAC编码以匹配文件头”

您需要speech.enums.RecognitionConfig.AudioEncoding.FLAC来处理FLAC文件

  

即使我尝试使用.wav文件,其给出的错误也为“ 400必须使用   单声道(单声道)音频,但WAV标头指示2个声道”

wav文件确实应该是单声道的,看起来就像您尝试过立体声文件一样。

答案 1 :(得分:0)

删除整个编码配置似乎也有效。我的意思是从配置设置中删除 encoding=speech.enums.RecognitionConfig.AudioEncoding.LINEAR16,因为这可以从音频文件的标题中推断出来。