2017-01-08 3 views
2

Linux의 아래 링크에 제공된 프로그램을 사용하고 있습니다.Python : Google 클라우드 음성 API에 pyaudio를 사용하여 원시 오디오 파일을 가져 오는 방법

https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/cloud-client/quickstart.py

내가 직면하고 문제는 내가 녹음 한 내용의 텍스트를 얻기 위해 위의 프로그램을 사용하는 pyaudio를 사용하여 마이크 녹음 내 자신의 원시 오디오 파일을 얻는 방법이다.

아래 pyaudio 프로그램이 있지만 wav 파일을 제공합니다. 하지만 Google 클라우드 음성 API 용 원시 오디오 파일을 저장하고 싶습니다. wav를 원시 오디오 파일로 변환하고 싶지 않습니다. 필자는 pyaudio를 사용하여 원시 오디오 파일을 직접 저장하려고합니다.

import pyaudio 
import wave 

FORMAT = pyaudio.paInt16 
CHANNELS = 2 
RATE = 44100 
CHUNK = 1024 
RECORD_SECONDS = 5 
WAVE_OUTPUT_FILENAME = "file.wav" 

audio = pyaudio.PyAudio() 

# start Recording 
stream = audio.open(format=FORMAT, channels=CHANNELS, 
      rate=RATE, input=True, 
      frames_per_buffer=CHUNK) 
print "recording..." 
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() 

답변

2

답변을 찾았습니다. 질문을 게시하는 것에 대해 죄송합니다. 프로그래밍에 익숙하지 않습니다.

import pyaudio 
import wave 

FORMAT = pyaudio.paInt16 

CHANNELS = 1 
RATE = 16000 
CHUNK = int(RATE/10) 
RECORD_SECONDS = 5 

audio = pyaudio.PyAudio() 

# start Recording 
stream = audio.open(format=FORMAT, channels=CHANNELS, 
      rate=RATE, input=True, 
      frames_per_buffer=CHUNK) 
print "recording..." 
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() 



file = open("newfile.raw", "w") 
file.write(b''.join(frames)) 
file.close() 
+2

우리가 배우는 방법은 질문 할 필요가 없습니다. 게다가, 당신은 자신의 질문에 대답하는 것보다 더 환영합니다. 그러나 작동하는 코드를 게시하는 대신 답변에 솔루션을 설명하십시오. 커뮤니티를 도와 주셔서 감사합니다! –

+1

@Rightleg 귀하의 소중한 조언에 감사드립니다. 나는 내 대답에서 다음 번에 코드를 설명 할 것이다. 하지만 여기서 문제는 코드를 이해하지 못했기 때문입니다. 어쨌든 행운을 비네!. –