使用pyaudio录音

问题描述:

我想使用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() 

首先,确保您的麦克风实际已连接,打开且未静音。

您在打开流时未提供设备索引。这意味着您将获得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

您的代码在我的环境中工作:Win7和Python3.4 - 使用笔记本电脑的麦克风记录我的声音。 也许你的麦克风的录音电平设置得太低。或者它已被静音或禁用?

确保您的麦克风已连接到电脑。它可以使用下面的代码来识别。

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