最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python如何運(yùn)用pyaudio庫去做一個(gè)固定采樣率音頻錄制器

 更新時(shí)間:2023年05月06日 15:07:03   作者:Obito_TXP  
這篇文章主要介紹了Python如何運(yùn)用pyaudio庫去做一個(gè)固定采樣率音頻錄制器問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Python用pyaudio庫做固定采樣率音頻錄制器

首先要去下載一個(gè)對(duì)應(yīng)的pyaudio庫的whl文件,目前最新版本是cp38的那個(gè),如果版本太低是用不了的,下載好后在編譯環(huán)境下的控制臺(tái)輸入pip install +whl文件路徑+XXX.whl+回車 

# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
import pyaudio
import wave
CHUNK=256#設(shè)置底緩存塊的大小為256
FORMAT=pyaudio.paInt16#設(shè)置采樣深度為16位
CHANNELS=2#設(shè)置聲道數(shù)為2
RATE=16000#設(shè)置采樣率16
RECORD_SECONDS=10#錄音時(shí)長為10s
p=pyaudio.PyAudio()#實(shí)例化一個(gè)對(duì)象
#打開聲卡
stream=p.open(format=FORMAT,
                  channels=CHANNELS,
                  rate=RATE,               
                  input=True,
                  frames_per_buffer=CHUNK)
#創(chuàng)建列表用來儲(chǔ)存采樣的音頻數(shù)據(jù)
record_buf=[]
print("***開始錄音:請(qǐng)?jiān)?0s內(nèi)輸入語音***")
for i in range(0,int(RATE/CHUNK*RECORD_SECONDS)):
    data=stream.read(CHUNK)
    record_buf.append(data)
print("***錄音結(jié)束***")
wf=wave.open('audiol.wav','wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(record_buf))
wf.close()#寫完后關(guān)閉聲卡
stream.stop_stream()#停止聲卡
stream.close()#關(guān)閉聲卡
p.terminate()#終止pyaudio

先前我出現(xiàn)了一個(gè)錯(cuò)誤:一直提示sample width not specified(采樣深度沒有被指定)

 在我無數(shù)次檢查后發(fā)現(xiàn)出錯(cuò)的地方是程序中sample少打了個(gè)字母'e'

最后在相應(yīng)的文件夾下會(huì)出現(xiàn)wav文件

Python音頻操作工具pyaudio上手

當(dāng)需要使用Python處理音頻數(shù)據(jù)時(shí),使用Python讀取與播放聲音必不可少,下面介紹一個(gè)好用的處理音頻PyAudio工具包。

PyAudio是Python開源工具包,由名思義,是提供對(duì)語音操作的工具包。提供錄音播放處理等功能,可以視作語音領(lǐng)域的OpenCV。

來看示例

1、采集音頻

下面以一段代碼演示如何從計(jì)算機(jī)麥克風(fēng)采集一段音頻,采集音頻時(shí)長 4s,保存文件 output.wav。

使用了tqdm模塊,可以方便顯示出來讀取過程:

import pyaudio
import wave
from tqdm import tqdm
def record_audio(wave_out_path,record_second):
	  FORMAT = pyaudio.paInt16#音頻數(shù)據(jù)格式
	  CHANNELS = 2#聲道數(shù)
	  RATE = 44100#采樣率
	  CHUNK = 1024#每次讀多少個(gè)數(shù)據(jù)
	  p = pyaudio.PyAudio()
	  stream = p.open(format=FORMAT,
	          		  channels=CHANNELS,
			          rate=RATE,
			          input=True,
			          frames_per_buffer=CHUNK)
	  wf = wave.open(wave_out_path, 'wb')
	  wf.setnchannels(CHANNELS)
	  wf.setsampwidth(p.get_sample_size(FORMAT))#其實(shí)就是2,表示兩個(gè)字節(jié)
	  wf.setframerate(RATE)
	  print("* recording")
	  ## RATE / CHUNK * record_second意思是:
	  ## 采樣率是RATE,每秒采集RATE個(gè)數(shù)據(jù),所以每秒的音頻需要讀取RATE / CHUNK次
	  for i in tqdm(range(0, int(RATE / CHUNK * record_second))):
		    data = stream.read(CHUNK)
		    wf.writeframes(data)
	  print("* done recording")
	  stream.stop_stream()
	  stream.close()
	  p.terminate()
	  wf.close()
record_audio("output.wav",record_second=4)

2、播放音頻

下面使用播放的功能來播放1中保存的音頻 output.wav,通過tqdm,顯示播放進(jìn)度條:

"""PyAudio Example: Play a WAVE file."""
import pyaudio
import wave
from tqdm import tqdm
def play_audio(wave_path):
	  CHUNK = 1024
	  wf = wave.open(wave_path, 'rb')
	  # instantiate PyAudio (1)
	  p = pyaudio.PyAudio()
	  # open stream (2)
	  stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
	          		  channels=wf.getnchannels(),
			          rate=wf.getframerate(),
			          output=True)
	  # read data
	  data = wf.readframes(CHUNK)
	  # play stream (3)
	  datas = []
	  while len(data) > 0:
		    data = wf.readframes(CHUNK)
		    datas.append(data)
	  for d in tqdm(datas):
	    	stream.write(d)
	  # stop stream (4)
	  stream.stop_stream()
	  stream.close()
	  # close PyAudio (5)
	  p.terminate()
play_audio("output.wav")

wave_read相關(guān)方法

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Pandas中Replace函數(shù)使用那些事兒

    Pandas中Replace函數(shù)使用那些事兒

    Pandas是基于NumPy?的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的,下面這篇文章主要給大家介紹了關(guān)于Pandas中Replace函數(shù)使用那些事兒,文中通過實(shí)例代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • Python?matplotlib繪圖時(shí)使用鼠標(biāo)滾輪放大/縮小圖像

    Python?matplotlib繪圖時(shí)使用鼠標(biāo)滾輪放大/縮小圖像

    Matplotlib是Python程序員可用的事實(shí)上的繪圖庫,雖然它比交互式繪圖庫在圖形上更簡單,但它仍然可以一個(gè)強(qiáng)大的工具,下面這篇文章主要給大家介紹了關(guān)于Python?matplotlib繪圖時(shí)使用鼠標(biāo)滾輪放大/縮小圖像的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 使用pd.merge表連接出現(xiàn)多余行的問題解決

    使用pd.merge表連接出現(xiàn)多余行的問題解決

    本文主要介紹了使用pd.merge表連接出現(xiàn)多余行的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • python神經(jīng)網(wǎng)絡(luò)使用Keras構(gòu)建RNN訓(xùn)練

    python神經(jīng)網(wǎng)絡(luò)使用Keras構(gòu)建RNN訓(xùn)練

    這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)使用Keras構(gòu)建RNN網(wǎng)絡(luò)訓(xùn)練,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2022-05-05
  • python將matplotlib嵌入到tkinter中的步驟詳解

    python將matplotlib嵌入到tkinter中的步驟詳解

    tkinter是Python標(biāo)準(zhǔn)庫中自帶的GUI工具,使用十分方便,如能將matplotlib嵌入到tkinter中,就可以做出相對(duì)專業(yè)的數(shù)據(jù)展示系統(tǒng),很有競爭力,本文就給大家介紹python將matplotlib嵌入到tkinter中的方法步驟,需要的朋友可以參考下
    2023-08-08
  • python實(shí)現(xiàn)企業(yè)微信定時(shí)發(fā)送文本消息的示例代碼

    python實(shí)現(xiàn)企業(yè)微信定時(shí)發(fā)送文本消息的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)企業(yè)微信定時(shí)發(fā)送文本消息的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • dpn網(wǎng)絡(luò)的pytorch實(shí)現(xiàn)方式

    dpn網(wǎng)絡(luò)的pytorch實(shí)現(xiàn)方式

    今天小編就為大家分享一篇dpn網(wǎng)絡(luò)的pytorch實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python防止隨意修改類屬性的實(shí)現(xiàn)方法

    python防止隨意修改類屬性的實(shí)現(xiàn)方法

    這篇文章主要介紹了python防止隨意修改類屬性的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python語法def語句及復(fù)雜用法實(shí)例探究

    Python語法def語句及復(fù)雜用法實(shí)例探究

    在 Python 中,def?是用于定義函數(shù)的關(guān)鍵字,本文將深入介紹def的用法和特點(diǎn),詳細(xì)說明如何定義函數(shù)、傳遞參數(shù)、返回值以及更復(fù)雜的用法
    2024-01-01
  • selenium+超級(jí)鷹實(shí)現(xiàn)模擬登錄12306

    selenium+超級(jí)鷹實(shí)現(xiàn)模擬登錄12306

    這篇文章主要介紹了selenium+超級(jí)鷹實(shí)現(xiàn)模擬登錄12306,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論

六枝特区| 旌德县| 从江县| 敖汉旗| 独山县| 泰和县| 宣武区| 巴东县| 宁安市| 名山县| 临澧县| 皮山县| 太仓市| 廉江市| 华坪县| 巫山县| 观塘区| 许昌市| 宣恩县| 仙桃市| 镇原县| 岑巩县| 定边县| 尚志市| 上杭县| 广德县| 芜湖县| 上高县| 冷水江市| 丹江口市| 常德市| 绩溪县| 拉孜县| 文化| 锡林浩特市| 綦江县| 桑植县| 南宫市| 乐安县| 历史| 金川县|