# 安装
pip install pyaudio |
如果你是 Python3.7 的版本,可能会有报错,安装不成功,解决办法如下:
首先要下载安装相应的 whl 文件,下载地址是 https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio,在这里选择 PyAudio‑0.2.11‑cp37‑cp37m‑win_amd64.whl(其中 cp37 代表 python 版本号 3.7,amd64 代表 64 位)。
下载之后在终端切换到下载的 whl 文件目录,直接用 pip 安装刚刚下载好的 PyAudio‑0.2.11‑cp37‑cp37m‑win_amd64.whl
pip install PyAudio-0.2.11-cp37-cp37m-win_amd64.whl |
操作完毕,启动 Python,导入 from pyaudio import PyAudio, paInt16
,未报错则安装成功。
# 代码如下
import wave | |
from pyaudio import PyAudio, paInt16 | |
# 参数设定 | |
framerate = 8000 | |
NUM_SAMPLES = 2000 | |
channels = 1 | |
sampwidth = 2 | |
TIME = 2 | |
# 写 Wav 文件 | |
def save_wave_file(filename, data): | |
wf = wave.open(filename, 'wb') | |
wf.setnchannels(channels) | |
wf.setsampwidth(sampwidth) | |
wf.setframerate(framerate) | |
wf.writeframes(b''.join(data)) | |
wf.close() | |
# 录音 | |
def my_record(): | |
pa = PyAudio() | |
stream = pa.open(format=paInt16, | |
channels=1, | |
rate=framerate, | |
input=True, | |
frames_per_buffer=NUM_SAMPLES) | |
my_buf = [] | |
count = 0 | |
# 控制录音时间 | |
while count < TIME * 20: | |
string_audio_data = stream.read(NUM_SAMPLES) | |
my_buf.append(string_audio_data) | |
print(my_buf) | |
save_wave_file('01.wav', my_buf) | |
stream.close() | |
# 播放音频 | |
chunk = 2014 | |
def play(): | |
wf = wave.open(r'01.wav', 'rb') | |
p = PyAudio() | |
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), | |
channels=wf.getnchannels(), | |
rate=wf.getframerate(), | |
output=True) | |
while True: | |
data = wf.readframes(chunk) | |
if data == '': | |
break | |
stream.write(data) | |
stream.close() | |
p.terminate() | |
if __name__ == '__main__': | |
my_record() | |
print('over') | |
play() |