利用Python進行語音信號處理(一. 錄製一段音頻並且回放,繪製圖像)

0. 安裝sounddevice庫

首先, 我們需要安裝sounddevice庫, 利用pip 可以很簡單的完成
打開命令行輸入

pip3 install sounddevice

0.1 導入包

安裝完之後, 我們將其導入

import sounddevice as sd

0.2 代碼

這裏我先把代碼放出, 下面的代碼

  1. 錄音5秒(可以自行更改測試)
  2. 並且顯示圖像
  3. 關閉圖像後播放音頻
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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章