2017-01-09 5 views
8

저는 pyaudio를 사용하여 내 음성을 wav 파일로 녹음하고 있습니다.Google 음성 API에 적합한 WAV 파일 만들기

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() 

나는 기본적으로 텍스트로 WAV 파일에 음성 변환 구글 음성 API에 대해 다음 코드를 사용하고 있습니다 : 나는 다음과 같은 코드를 사용하고 https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/api-client/transcribe.py

을 내가 wav 파일을 가져올 때를하는 그때 이후 나는 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."> 

나는이에 대해 다음 해결 방법을 사용하고 있습니다 : 구글의 코드에 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 파일을 만들려면 어떻게해야하나요?

답변

4

문제

subprocess.call(['avconv', '-i', 'first.wav', '-y', '-ar', '48000', '-ac', '1', 'last.flac']) 
를 해결했다 avconv와 FLAC 파일을 wav 파일을 변환 및 구글 음성 API에 보내기