日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的pyaudio教程入门_[宜配屋]听图阁

發布時間:2024/3/12 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的pyaudio教程入门_[宜配屋]听图阁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

0.引子

當需要使用Python處理音頻數據時,使用python讀取與播放聲音必不可少,下面介紹一個好用的處理音頻PyAudio工具包。

PyAudio是Python開源工具包,由名思義,是提供對語音操作的工具包。提供錄音播放處理等功能,可以視作語音領域的OpenCv。

1.簡介

PyAudio為跨平臺音頻I / O庫 PortAudio 提供 Python 綁定。使用PyAudio,您可以輕松地使用Python在各種平臺上播放和錄制音頻,例如GNU / Linux,Microsoft Windows和Apple Mac OS X / macOS。

PyAudio的靈感來自:

pyPortAudio / fastaudio :PortAudio? v18 ?API的Python綁定。

tkSnack:Tcl / Tk和Python的跨平臺聲音工具包。

2.安裝

目前的版本是 PyAudio v0.2.11 。在大多數平臺上使用pip安裝PyAudio。對于v0.2.9之前的版本,PyAudio分發安裝二進制文件,這些文件?存檔在這里 。

微軟Windows

使用 pip安裝:

python -m pip install pyaudio

筆記:

如果pip尚未與您的Python安裝捆綁在一起,請 在此處獲取?。

pip將獲取并安裝PyAudio輪(預先打包的二進制文件)。目前,有車輪兼容Python 2.7,3.4,3.5和3.6?的?官方發行版 。對于這些版本,可以使用32位和64位車輪。

這些二進制文件包括使用MinGW構建的PortAudio v19 v190600_20161030。它們僅支持Windows MME API, 不 包括對DirectX,ASIO等的支持。如果需要支持未包含的API,則需要編譯PortAudio和PyAudio。 Apple Mac OS X.

使用 Homebrew安裝必備的portaudio庫,然后使用pip安裝PyAudio:

brew install portaudio

pip install pyaudio

筆記:

如果尚未安裝,請下載? Homebrew。

pip將下載PyAudio源代碼并為您的Python版本構建它。

Homebrew和構建PyAudio還需要安裝Xcode命令行工具( 更多信息 )。

Debian / Ubuntu

使用包管理器安裝PyAudio:

sudo apt-get install python-pyaudio python3-pyaudio

如果沒有最新版本的PyAudio,請使用pip安裝它:

pip install pyaudio

筆記:

pip將下載PyAudio源并為您的系統構建它。請務必事先安裝portaudio庫開發包( portaudio19-dev )和python開發包( python-all-dev )。

為了更好地隔離系統包,請考慮在virtualenv中 安裝PyAudio?。

PyAudio來源

源代碼可從Python Package Index(PyPI)下載: pypi.python.org/pypi/PyAudio。

或克隆git存儲庫:

要從源代碼構建PyAudio,您還需要構建 PortAudio v19 。有關為各種平臺構建PyAudio的一些說明,請參閱 編譯提示 。要使用Microsoft Visual Studio構建PyAudio,請查看Sebastian Audet的 說明 。

3.示例

1).采集音頻

下面以一段代碼演示如何從計算機麥克風采集一段音頻,采集音頻時長 4s,保存文件 output.wav

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

* recording

100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 172/172 [00:03<00:00, 43.40it/s]

* done recording

import pyaudio

import wave

from tqdm import tqdm

def record_audio(wave_out_path,record_second):

CHUNK = 1024

FORMAT = pyaudio.paInt16

CHANNELS = 2

RATE = 44100

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))

wf.setframerate(RATE)

print("* recording")

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)

要使用PyAudio,首先使用 pyaudio.PyAudio()

(1)實例化PyAudio?,它設置portaudio系統。

要錄制或播放音頻,請使用 pyaudio.PyAudio.open()

(2)在所需設備上打開所需音頻參數的流。這設置了 pyaudio.Stream 播放或錄制音頻。

通過使用流式傳輸 pyaudio.Stream.write() 音頻數據或使用流式傳輸音頻數據來播放音頻? pyaudio.Stream.read() 。

(3)請注意,在“阻止模式”中,每個 pyaudio.Stream.write() 或? pyaudio.Stream.read() 阻止直到所有給定/請求的幀都被播放/記錄。或者,要動態生成音頻數據或立即處理錄制的音頻數據,請使用下面概述的“回調模式”。

使用 pyaudio.Stream.stop_stream() 暫停播放/錄制,并 pyaudio.Stream.close() 終止流。(4)

最后,使用 pyaudio.PyAudio.terminate() (5)終止portaudio會話

2).播放音頻

下面使用播放的功能來播放1)中保存的音頻 output.wav

通過tqdm,顯示播放進度條,如下:

100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 172/172 [00:03<00:00, 43.40it/s]

"""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")

2).以回調方式播放音頻

當需要在執行其他程序時同時播放音頻,可以使用回調的方式播放,示例代碼如下:

"""PyAudio Example: Play a WAVE file."""

import pyaudio

import wave

from tqdm import tqdm

import time

def play_audio_callback(wave_path):

CHUNK = 1024

wf = wave.open(wave_path, 'rb')

# instantiate PyAudio (1)

p = pyaudio.PyAudio()

def callback(in_data, frame_count, time_info, status):

data = wf.readframes(frame_count)

return (data, pyaudio.paContinue)

# open stream (2)

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),

channels=wf.getnchannels(),

rate=wf.getframerate(),

output=True,

stream_callback=callback)

# read data

stream.start_stream()

while stream.is_active():

time.sleep(0.1)

# stop stream (4)

stream.stop_stream()

stream.close()

# close PyAudio (5)

p.terminate()

play_audio_callback("output.wav")

Reference:

總結

以上所述是小編給大家介紹的Python音頻操作工具PyAudio上手教程詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對【聽圖閣-專注于Python設計】網站的支持!

如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

總結

以上是生活随笔為你收集整理的python的pyaudio教程入门_[宜配屋]听图阁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。