2016-11-20 140 views
0

我想使用python錄製語音。 我試圖使用pyaudio模塊,它在我的電腦上保存了一個wav文件,但錄製了一個靜態語音。 有什麼建議嗎?使用pyaudio錄音

import pyaudio 
import wave 

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

p = pyaudio.PyAudio() 

stream = p.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("* done recording") 

stream.stop_stream() 
stream.close() 
p.terminate() 

wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') 
wf.setnchannels(CHANNELS) 
wf.setsampwidth(p.get_sample_size(FORMAT)) 
wf.setframerate(RATE) 
wf.writeframes(b''.join(frames)) 
wf.close() 

回答

2

首先,確保您的麥克風實際已連接,打開且未靜音。

您在打開流時未提供設備索引。這意味着您將獲得PyAudio認爲默認設備。這可能不是你的麥克風。

在交互式Python會話中使用PyAudio對象的get_device_countget_device_info_by_index方法。打印get_device_info_by_index返回的字典以確定哪個設備索引代表您的麥克風,並在打開流時提供該索引號作爲input_device_index參數。

+0

我怎麼知道我的麥克風的索引是什麼? – user4719989

+0

@ user4719989查看更新的回答 –

+0

get_device_info_by_index 給我一個巨大的字典 – user4719989

0

您的代碼在我的環境中工作:Win7和Python3.4 - 使用筆記本電腦的麥克風記錄我的聲音。 也許你的麥克風的錄音電平設置得太低。或者它已被靜音或禁用?

0

確保您的麥克風已連接到電腦。它可以使用下面的代碼來識別。

import speech_recognition as sr for index, name in enumerate(sr.Microphone.list_microphone_names()): print("Microphone with name \"{1}\" found for microphone(device_index{0})".format(index, name))