私はwavファイルとして自分の声を録音するためにpyaudioを使用しています。私はこれはwavファイルをインポートしようとするhttps://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/api-client/transcribe.pyGoogleスピーチAPIのための適切なWAVファイルの作成
:私は基本的にテキストにWAVファイルの音声を変換し、Googleの音声APIについて、次のコードを使用してい
def voice_recorder():
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 22050
CHUNK = 1024
RECORD_SECONDS = 4
WAVE_OUTPUT_FILENAME = "first.wav"
audio = pyaudio.PyAudio()
# start Recording
stream = audio.open(format=FORMAT, channels=CHANNELS,
rate=RATE, input=True,
frames_per_buffer=CHUNK)
print "konusun..."
frames = []
for i in range(0, int(RATE/CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
#print "finished recording"
# stop Recording
stream.stop_stream()
stream.close()
audio.terminate()
waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.writeframes(b''.join(frames))
waveFile.close()
:私は、次のコードを使用していますそして、後に、私はMP3ファイルを変換するよ、私はffmpegのとMP3にWAVファイルを変換しています:
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://speech.googleapis.com/v1beta1/speech:syncrecognize?alt=json returned "Invalid Configuration, Does not match Wav File Header.
Wav Header Contents:
Encoding: LINEAR16
Channels: 2
Sample Rate: 22050.
Request Contents:
Encoding: linear16
Channels: 1
Sample Rate: 22050.">
私はこのために、以下の回避策を使用しています:Googleのコードにpyaudioによって生成され、私は次のエラーを取得していますsoxで再びwavに:
def wav_to_mp3():
FNULL = open(os.devnull, 'w')
subprocess.call(['ffmpeg', '-i', 'first.wav', '-ac', '1', '-ab', '6400', '-ar', '16000', 'second.mp3', '-y'], stdout=FNULL, stderr=subprocess.STDOUT)
def mp3_to_wav():
subprocess.call(['sox', 'second.mp3', '-r', '16000', 'son.wav'])
GoogleのAPIはこのWAV出力で動作しますが、品質が低下しすぎるため、うまく動作しません。
最初の手順でpyaudioでGoogleの互換WAVファイルを作成するにはどうすればよいですか?