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

Python音頻操作工具PyAudio上手教程詳解

 更新時(shí)間:2019年06月26日 10:58:08   作者:小宋是呢  
PyAudio是Python開(kāi)源工具包,由名思義,是提供對(duì)語(yǔ)音操作的工具包。下面介紹一個(gè)好用的處理音頻PyAudio工具包。感興趣的朋友跟隨小編一起看看吧

0.引子

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

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

1.簡(jiǎn)介

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

PyAudio的靈感來(lái)自:

2.安裝

目前的版本是 PyAudio v0.2.11 。在大多數(shù)平臺(tái)上使用pip安裝PyAudio。對(duì)于v0.2.9之前的版本,PyAudio分發(fā)安裝二進(jìn)制文件,這些文件 存檔在這里

微軟Windows

使用 pip 安裝:

python -m pip install pyaudio

筆記:

  • 如果pip尚未與您的Python安裝捆綁在一起,請(qǐng) 在此處 獲取 。
  • pip將獲取并安裝PyAudio輪(預(yù)先打包的二進(jìn)制文件)。目前,有車輪兼容Python 2.7,3.4,3.5和3.6 的 官方發(fā)行版 。對(duì)于這些版本,可以使用32位和64位車輪。
  • 這些二進(jìn)制文件包括使用MinGW構(gòu)建的PortAudio v19 v190600_20161030。它們僅支持Windows MME API, 包括對(duì)DirectX,ASIO等的支持。如果需要支持未包含的API,則需要編譯PortAudio和PyAudio。 Apple Mac OS X.

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

brew install portaudio 
pip install pyaudio

筆記:

  • 如果尚未安裝,請(qǐng)下載  Homebrew 。
  • pip將下載PyAudio源代碼并為您的Python版本構(gòu)建它。
  • Homebrew和構(gòu)建PyAudio還需要安裝Xcode命令行工具( 更多信息 )。

Debian / Ubuntu

使用包管理器安裝PyAudio:

sudo apt-get install python-pyaudio python3-pyaudio

如果沒(méi)有最新版本的PyAudio,請(qǐng)使用pip安裝它:

pip install pyaudio

筆記:

  • pip將下載PyAudio源并為您的系統(tǒng)構(gòu)建它。請(qǐng)務(wù)必事先安裝portaudio庫(kù)開(kāi)發(fā)包( portaudio19-dev )和python開(kāi)發(fā)包( python-all-dev )。
  • 為了更好地隔離系統(tǒng)包,請(qǐng)考慮在virtualenv中 安裝PyAudio 。

 PyAudio來(lái)源

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

或克隆git存儲(chǔ)庫(kù):

git clone  https://people.csail.mit.edu/hubert/git/pyaudio.git

要從源代碼構(gòu)建PyAudio,您還需要構(gòu)建 PortAudio v19 。有關(guān)為各種平臺(tái)構(gòu)建PyAudio的一些說(shuō)明,請(qǐng)參閱 編譯提示 。要使用Microsoft Visual Studio構(gòu)建PyAudio,請(qǐng)查看Sebastian Audet的 說(shuō)明 。

3.示例

1).采集音頻

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

使用了tqdm模塊,可以方便顯示出來(lái)讀取過(guò)程,如下:

* 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)實(shí)例化PyAudio ,它設(shè)置portaudio系統(tǒng)。

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

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

通過(guò)使用流式傳輸 pyaudio.Stream.write() 音頻數(shù)據(jù)或使用流式傳輸音頻數(shù)據(jù)來(lái)播放音頻  pyaudio.Stream.read()

(3)請(qǐng)注意,在“阻止模式”中,每個(gè) pyaudio.Stream.write() 或  pyaudio.Stream.read() 阻止直到所有給定/請(qǐng)求的幀都被播放/記錄?;蛘?,要?jiǎng)討B(tài)生成音頻數(shù)據(jù)或立即處理錄制的音頻數(shù)據(jù),請(qǐng)使用下面概述的“回調(diào)模式”。

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

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

2).播放音頻

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

通過(guò)tqdm,顯示播放進(jìn)度條,如下:

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).以回調(diào)方式播放音頻

當(dāng)需要在執(zhí)行其他程序時(shí)同時(shí)播放音頻,可以使用回調(diào)的方式播放,示例代碼如下:

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

1. http://people.csail.mit.edu/hubert/pyaudio/

總結(jié)

以上所述是小編給大家介紹的Python音頻操作工具PyAudio上手教程詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • Python接口測(cè)試文件上傳實(shí)例解析

    Python接口測(cè)試文件上傳實(shí)例解析

    這篇文章主要介紹了Python接口測(cè)試文件上傳實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • flask?route對(duì)協(xié)議作用及設(shè)計(jì)思路

    flask?route對(duì)協(xié)議作用及設(shè)計(jì)思路

    這篇文章主要為大家介紹了flask?route對(duì)協(xié)議作用及設(shè)計(jì)思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • python將excel轉(zhuǎn)換為csv的代碼方法總結(jié)

    python將excel轉(zhuǎn)換為csv的代碼方法總結(jié)

    在本篇文章里小編給大家分享了關(guān)于python如何將excel轉(zhuǎn)換為csv的實(shí)例方法和代碼內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-07-07
  • Python生成掃雷地圖的方法

    Python生成掃雷地圖的方法

    這篇文章主要為大家詳細(xì)介紹了Python生成掃雷地圖的方法,并非游戲?qū)崿F(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python繪圖之在父組件中使用子組件的函數(shù)詳解

    Python繪圖之在父組件中使用子組件的函數(shù)詳解

    這篇文章主要為大家詳細(xì)介紹了Python在項(xiàng)目開(kāi)發(fā)時(shí),如何實(shí)現(xiàn)在父組件中使用子組件的函數(shù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-08-08
  • python字符串中兩個(gè)大括號(hào){{}}的使用及說(shuō)明

    python字符串中兩個(gè)大括號(hào){{}}的使用及說(shuō)明

    這篇文章主要介紹了python字符串中兩個(gè)大括號(hào){{}}的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python生成不重復(fù)隨機(jī)數(shù)和對(duì)list亂序的解決方法

    python生成不重復(fù)隨機(jī)數(shù)和對(duì)list亂序的解決方法

    下面小編就為大家分享一篇python生成不重復(fù)隨機(jī)數(shù)和對(duì)list亂序的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • python文件排序的方法總結(jié)

    python文件排序的方法總結(jié)

    在本篇內(nèi)容里小編給各位整理的是一篇關(guān)于python文件排序的方法總結(jié),有需要的朋友們可以參考下。
    2020-09-09
  • python 重命名軸索引的方法

    python 重命名軸索引的方法

    今天小編就為大家分享一篇python 重命名軸索引的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • python解析含有重復(fù)key的json方法

    python解析含有重復(fù)key的json方法

    今天小編就為大家分享一篇python解析含有重復(fù)key的json方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01

最新評(píng)論

阜平县| 时尚| 石城县| 凤翔县| 若尔盖县| 温泉县| 溆浦县| 德令哈市| 玉龙| 平山县| 晋州市| 汕尾市| 镇平县| 柳河县| 永嘉县| 阿克| 阿城市| 金平| 洞口县| 瓦房店市| 湘西| 济源市| 南宫市| 邵武市| 桃园市| 恩平市| 富蕴县| 东光县| 平度市| 丹寨县| 安达市| 福建省| 容城县| 板桥市| 九龙城区| 四平市| 达日县| 瓦房店市| 江城| 会理县| 噶尔县|