我想使用pyaudio和IBM Bluemix服务实现简单的语音到文本工具。目前我需要录制音频,将其保存到磁盘,然后再次加载,以便将其发送到Bluemix。
RATE=44100
RECORD_SECONDS = 10
CHUNKSIZE = 1024
# initialize portaudio
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=RATE, input=True, frames_per_buffer=CHUNKSIZE)
frames = [] # A python-list of chunks(numpy.ndarray)
print("Please speak!")
for _ in range(0, int(RATE / CHUNKSIZE * RECORD_SECONDS)):
data = stream.read(CHUNKSIZE)
frames.append(np.fromstring(data, dtype=np.int16))
#Convert the list of numpy-arrays into a 1D array (column-wise)
numpydata = np.hstack(frames)
# close stream
stream.stop_stream()
stream.close()
p.terminate()
# save audio to disk
wav.write('out.wav',RATE,numpydata)
# Open audio file(.wav) in wave format
audio = open('/home/dolorousrtur/Documents/Projects/Capstone/out.wav', 'rb')
# send audio to bluemix service
headers={'Content-Type': 'audio/wav'}
r = requests.post(url, data=audio, headers=headers, auth=(username, password))
如何将pyaudio帧转换为wav格式而不将其写入磁盘?