Python3.7在win10下安装PyAudio库以及实现音频的录制与播放

Python3.7 无法安装pyaudio

度娘的结果基本都是这个,pip install pyaudio.....然而十有八九你的电脑不买账,会报错。

报错信息:

    running install
    running build
    running build_py
    creating build
    creating buildlib.win-amd64-3.7
    copying srcpyaudio.py -> buildlib.win-amd64-3.7
    running build_ext
    building '_portaudio' extension
    error: [WinError 3] 系统找不到指定的路径。:     
    'D:\VS2015\VC\PlatformSDK\lib'

或者:

 [WinError 3] 系统找不到指定的路径。: 'C:\Program Files (x86)\Microsoft\v8.1\lib'

还有....

 

从网上找到解决Python安装PyAudio库问题基本都是基于Linux系统下的,所以我觉得也有必要写一下这个安装库的方法,分享给到大家。

我们的解决方法非常简单,就是pip不是不行么,那咱们自己下好了库(PyAudio),安装上不就好了,这就是我们的解决安装等疑难杂症问题的基本思路,对,就是变通;

到这个地址下载对应的whl

Python Extension Packages for Windows

CP37就是python3.7--amd64应该都知道就是系统的位数,选好了再下。

 

下载好了之后打开“命令提示符”,cd到下载的路径然后,cd命令还不会使的话你该反省一下,去百度一下吧,有很多的。

注:下面的FileName,就是文件名称,全名。(当然要加上文件格式.whl)

pip install "FileName"

 

安装成功测试:

 

安装成功后我们来写一个实际案例,庆祝一下。

录制一个4s的wav格式音频文件,

因为RECORD_SECONDS = 5.

import pyaudio
import wave

#定义音频数据参数
CHUNK = 1024    #
FORMAT = pyaudio.paInt16
CHANNELS = 2   #渠道
RATE = 44100   #
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "Recording.wav"

p = pyaudio.PyAudio()

# 打开数据流
stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)

print("& Start 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()

# 关闭 PyAudio  
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()

ok

 

同理我就直接上代码,音频的播放:

#引入库
import wave
import pyaudio

#定义数据流块
chunk = 1024

#只读方式打开wav文件
f = wave.open(r"FilePath","rb")

p = pyaudio.PyAudio()

#打开数据流
stream = p.open(format = p.get_format_from_width(f.getsampwidth()),
channels = f.getnchannels(),
rate = f.getframerate(),
output = True)

#读取数据
data = f.readframes(chunk)

#播放FileName.wav
while data != None:
    stream.write(data)
    data = f.readframes(chunk)

#停止数据流
stream.stop_stream()
stream.close()

#关闭 PyAudio
p.terminate()

 

文章实例的借鉴学习于:

原文地址:https://www.cnblogs.com/wyl-pi/p/10799260.html