0. 安裝sounddevice庫
首先, 我們需要安裝sounddevice
庫, 利用pip
可以很簡單的完成
打開命令行輸入
pip3 install sounddevice
0.1 導入包
安裝完之後, 我們將其導入
import sounddevice as sd
0.2 代碼
這裏我先把代碼放出, 下面的代碼
- 錄音5秒(可以自行更改測試)
- 並且顯示圖像
- 關閉圖像後播放音頻
import sounddevice as sd
import matplotlib.pyplot as plt
fs = 44100 # 指定採樣頻率
duration = 5 # 指定持續時間
#方法會立即返回, 但是會在後臺繼續的錄音
myrecording = sd.rec(int(duration * fs), samplerate=fs, channels=2)
# 調用wait(), wait()會在播放完成後才返回
sd.wait()
print('語音信號採集結束\nVoice signal picked finished')
print('開始播放:\n Start to play:')
print(myrecording[:,1])
plt.plot(myrecording[:,1])
plt.show()
#方法會立即返回, 但是會在後臺繼續播放
sd.play(myrecording, fs)
# 調用wait(), wait()會在播放完成後才返回
sd.wait()
1. 錄音
1.1 確認當前默認設備可用
我們可以利用以下方法屬性來查詢設備
sounddevice.query_devices()
: 查詢所有可用設備, 返回一個包含可用設備信息字典的元組sounddevice.default.device
: 查詢默認設備, 是一個數組,有兩個值- 第一個值爲在
sounddevice.query_devices()
中的索引代表默認輸入設備, - 第二個值爲在
sounddevice.query_devices()
中的索引,代表默認輸出設備
- 第一個值爲在
利用操作系統自帶的錄音機, 確保當前默認設備可用, 這裏不多說
1.2 進行錄音
我們利用rec()
方法進行錄音,返回值爲一個採樣的數組, 這個方法會立即返回, 在後臺進行錄音, 返回值之後纔會進行填充, 我們可用利用wait()
方法, wait()
方法會在錄音完成之後返回
myrecording = sd.rec(int(duration * fs), samplerate=fs, channels=2)
wait()
你可以利用
sounddevice.default.device='設備名稱'
的方式來指定輸入設備
1.3 顯示圖像
當然, 因爲返回值是數組, 你也可用利用諸如matlplotlab
的庫把他給顯示出來
import matplotlib.pyplot as plt
#此處省略部分代碼
plt.plot(myrecording[:,1])
plt.show()
注意,因爲我們指定了兩個信道, 所以myrecording 這個返回值會有兩列, 我們取第一列即可
1.4 播放音頻
利用sd.play()
來播放音頻, 同樣的, 這個方法也會立即返回, 需要調用wait()
方法
#方法會立即返回, 但是會在後臺繼續播放
sd.play(myrecording, fs)
# 調用wait(), wait()會在播放完成後才返回
sd.wait()