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

Python實(shí)現(xiàn)播放和錄制聲音的功能

 更新時(shí)間:2020年08月12日 15:17:50   作者:TalkPython  
這篇文章主要介紹了Python實(shí)現(xiàn)播放和錄制聲音的功能,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下

Python語言已經(jīng)無所不能了,今天就來分享一下,如何使用Python來錄制和播放音頻文件。

下面是一些可以播放和錄制音頻的Python第三方庫:

  • playsound,支持MP3和WAV,目前只支持簡單的回放。
  • simpleaudio,支持WAV,提供檢查文件是否仍在播放的功能。
  • winsound,支持WAV,只支持windows。
  • python-sounddevice和pyaudio為PortAudio庫提供綁定,以便跨平臺(tái)回放WAV文件。
  • pydub,需要pyaudio來播放音頻,但是安裝了ffmpeg之后,它允許您使用幾行代碼來播放各種音頻格式。

一、播放音頻文件

使用playsound庫

1、安裝

$ pip install playsound

2、使用播放音頻

from playsound import playsound
playsound('myfile.wav')

使用simpleaudio庫

1、安裝

$ pip install simpleaudio

2、使用播放音頻

mport simpleaudio as sa

filename = 'myfile.wav'
wave_obj = sa.WaveObject.from_wave_file(filename)
play_obj = wave_obj.play()
play_obj.wait_done() # Wait until sound has finished playing

使用winsound庫

如果您使用Windows,您可以使用內(nèi)置的winsound模塊來訪問其基本的聲音播放機(jī)制。播放WAV文件可以在幾行代碼:

import winsound

filename = 'myfile.wav'
winsound.PlaySound(filename, winsound.SND_FILENAME)

使用python-sounddevice庫

1、安裝

$ pip install sounddevice

2、使用播放音頻

import sounddevice as sd
import soundfile as sf

filename = 'myfile.wav'
# Extract data and sampling rate from file
data, fs = sf.read(filename, dtype='float32') 
sd.play(data, fs)
status = sd.wait() # Wait until file is done playing

使用pydub庫

1、安裝

$ pip install pydub

2、使用播放音頻

from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_wav('myfile.wav')
play(sound)

默認(rèn)情況下,pydub只支持播放wav格式音頻。如果你想播放更多其他格式的音頻文件。需要安裝ffmpeg-python。

$ pip install ffmpeg-python

安裝了ffmpeg后,播放MP3文件只需要在我們之前的代碼中做一個(gè)小小的修改:

from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_mp3('myfile.mp3')
play(sound)

使用pyaudio庫

1、安裝

$ pip install pyaudio

2、使用播放音頻

import pyaudio
import wave

filename = 'myfile.wav'


chunk = 1024 
wf = wave.open(filename, 'rb')
p = pyaudio.PyAudio()
stream = p.open(format = p.get_format_from_width(wf.getsampwidth()),
    channels = wf.getnchannels(),
    rate = wf.getframerate(),
    output = True)

data = wf.readframes(chunk)

while data != '':
 stream.write(data)
 data = wf.readframes(chunk)

stream.close()
p.terminate()

您可能已經(jīng)注意到,使用pyaudio播放聲音比使用前面看到的庫播放聲音要復(fù)雜一些。這意味著如果您只想在Python應(yīng)用程序中播放聲音效果,那么它可能不是您的首選。

但是,由于pyaudio提供了更低級(jí)的控制,因此可以獲取和設(shè)置輸入和輸出設(shè)備的參數(shù),并檢查CPU負(fù)載和輸入或輸出延遲。

它還允許您在回調(diào)模式下播放和錄制音頻,在回調(diào)模式中,當(dāng)需要回放新數(shù)據(jù)或記錄可用數(shù)據(jù)時(shí),將調(diào)用指定的回調(diào)函數(shù)。如果您的音頻需要的不僅僅是簡單的回放,那么這些選項(xiàng)使pyaudio成為一個(gè)合適的庫。

既然您已經(jīng)了解了如何使用許多不同的庫來播放音頻,現(xiàn)在就來看看如何使用Python自己錄制音頻。

二、錄音

Python -sounddevice和pyaudio庫提供了用Python錄制音頻的方法。

1 、使用python-sounddevice錄音

import sounddevice as sd
from scipy.io.wavfile import write

fs = 44100 # Sample rate
seconds = 3 # Duration of recording

myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=2)
sd.wait() # Wait until recording is finished
write('output.wav', fs, myrecording) # Save as WAV file 

2、使用pyaudio錄音

import pyaudio
import wave

chunk = 1024 # Record in chunks of 1024 samples
sample_format = pyaudio.paInt16 # 16 bits per sample
channels = 2
fs = 44100 # Record at 44100 samples per second
seconds = 3
filename = "output.wav"

p = pyaudio.PyAudio() # Create an interface to PortAudio

print('Recording')

stream = p.open(format=sample_format,
    channels=channels,
    rate=fs,
    frames_per_buffer=chunk,
    input=True)

frames = [] # Initialize array to store frames

# Store data in chunks for 3 seconds
for i in range(0, int(fs / chunk * seconds)):
 data = stream.read(chunk)
 frames.append(data)

# Stop and close the stream 
stream.stop_stream()
stream.close()
# Terminate the PortAudio interface
p.terminate()

print('Finished recording')

# Save the recorded data as a WAV file
wf = wave.open(filename, 'wb')
wf.setnchannels(channels)
wf.setsampwidth(p.get_sample_size(sample_format))
wf.setframerate(fs)
wf.writeframes(b''.join(frames))
wf.close()

三、保存和格式轉(zhuǎn)換

1、使用pydub保存音頻

from pydub import AudioSegment
sound = AudioSegment.from_wav('myfile.wav')
sound.export('myfile.mp3', format='mp3')

2、使用pydub完成格式轉(zhuǎn)換

from pydub import AudioSegment
sound = AudioSegment.from_wav('myfile.wav')
sound.export('myfile.mp3', format='mp3')

如果覺得內(nèi)容還不錯(cuò),分享給更多朋友,一起提升編程技能。

以上就是Python實(shí)現(xiàn)播放和錄制聲音的功能的詳細(xì)內(nèi)容,更多關(guān)于python 播放和錄制聲音的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Django web框架使用url path name詳解

    Django web框架使用url path name詳解

    這篇文章主要介紹了Django web框架使用url path name詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • python將處理好的圖像保存到指定目錄下的方法

    python將處理好的圖像保存到指定目錄下的方法

    今天小編就為大家分享一篇python將處理好的圖像保存到指定目錄下的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python求正態(tài)分布曲線下面積實(shí)例

    Python求正態(tài)分布曲線下面積實(shí)例

    今天小編就為大家分享一篇Python求正態(tài)分布曲線下面積實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 使用Python的PIL模塊來進(jìn)行圖片對(duì)比

    使用Python的PIL模塊來進(jìn)行圖片對(duì)比

    這篇文章主要介紹了使用Python的PIL模塊來進(jìn)行圖片對(duì)比的方法,搜索引擎最基本的圖片搜索也是利用圖片顏色值的對(duì)比來實(shí)現(xiàn)的,需要的朋友可以參考下
    2016-02-02
  • Python匿名函數(shù)詳情

    Python匿名函數(shù)詳情

    這篇文章主要介紹了Python匿名函數(shù),在python中,除了一般使用def定義的函數(shù)外,還有一種使用lambda定義的匿名函數(shù),這種函數(shù)可以用在任何普通函數(shù)可以使用的地方,但在定義時(shí)被嚴(yán)格限定為單一表達(dá)式,下面來看詳細(xì)內(nèi)容吧
    2021-11-11
  • 使用python對(duì)excle和json互相轉(zhuǎn)換的示例

    使用python對(duì)excle和json互相轉(zhuǎn)換的示例

    今天小編就為大家分享一篇使用python對(duì)excle和json互相轉(zhuǎn)換的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python的pygame安裝教程詳解

    Python的pygame安裝教程詳解

    Pygame是跨平臺(tái)Pyth,Pygame 作者是 Pete Shinners, 協(xié)議為 GNU Lesser General Public License。這篇文章主要介紹了Python的pygame安裝教程,需要的朋友可以參考下
    2020-02-02
  • python如何把字符串類型list轉(zhuǎn)換成list

    python如何把字符串類型list轉(zhuǎn)換成list

    這篇文章主要介紹了python如何吧字符串類型list轉(zhuǎn)換成list,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 淺析如何在Python中使用結(jié)構(gòu)模式匹配

    淺析如何在Python中使用結(jié)構(gòu)模式匹配

    在Python 3.10中引入了模式匹配語法,允許我們?cè)趹?yīng)用程序中使用強(qiáng)大的新編程技術(shù)進(jìn)行決策,下面我們就來講講如何在Python中使用結(jié)構(gòu)模式匹配吧
    2023-08-08
  • 跟老齊學(xué)Python之Python文檔

    跟老齊學(xué)Python之Python文檔

    文檔,這個(gè)詞語在經(jīng)常在程序員的嘴里冒出來,有時(shí)候他們還經(jīng)常以文檔有沒有或者全不全為標(biāo)準(zhǔn)來衡量一個(gè)軟件項(xiàng)目是否高大上。那么,軟件中的文檔是什么呢?有什么要求呢?python文檔又是什么呢?文檔有什么用呢?
    2014-10-10

最新評(píng)論

阜平县| 乐安县| 宁阳县| 雅安市| 滦平县| 无锡市| 蕲春县| 公安县| 沙河市| 响水县| 弋阳县| 朝阳县| 抚远县| 天等县| 四平市| 西乌珠穆沁旗| 昌都县| 海南省| 华宁县| 日喀则市| 宜城市| 阳西县| 文成县| 宁津县| 崇明县| 济源市| 永靖县| 平利县| 和平县| 三明市| 沽源县| 滁州市| 拉萨市| 屯留县| 剑阁县| 天门市| 驻马店市| 仲巴县| 双流县| 阳原县| 会理县|