Python3.7 無法安裝pyaudio
度娘的結果基本都是這個,pip install pyaudio.....然而十有八九你的電腦不買賬,會報錯。
報錯信息:
running install running build running build_py creating build creating build\lib.win-amd64-3.7 copying src\pyaudio.py -> build\lib.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()
文章實例的借鑒學習於:
http://people.csail.mit.edu/hubert/pyaudio/docs/#class-pyaudio
