亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中播放和錄制聲音的方法

發布時間:2020-08-13 11:18:33 來源:億速云 閱讀:923 作者:小新 欄目:開發技術

小編給大家分享一下Python中播放和錄制聲音的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

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

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

  • playsound,支持MP3和WAV,目前只支持簡單的回放。
  • simpleaudio,支持WAV,提供檢查文件是否仍在播放的功能。
  • winsound,支持WAV,只支持windows。
  • python-sounddevice和pyaudio為PortAudio庫提供綁定,以便跨平臺回放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,您可以使用內置的winsound模塊來訪問其基本的聲音播放機制。播放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)

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

$ pip install ffmpeg-python

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

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

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

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

它還允許您在回調模式下播放和錄制音頻,在回調模式中,當需要回放新數據或記錄可用數據時,將調用指定的回調函數。如果您的音頻需要的不僅僅是簡單的回放,那么這些選項使pyaudio成為一個合適的庫。

既然您已經了解了如何使用許多不同的庫來播放音頻,現在就來看看如何使用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()

三、保存和格式轉換

1、使用pydub保存音頻

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

2、使用pydub完成格式轉換

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

如果覺得內容還不錯,分享給更多朋友,一起提升編程技能。

看完了這篇文章,相信你對Python中播放和錄制聲音的方法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潢川县| 侯马市| 平凉市| 周口市| 东安县| 南昌县| 海晏县| 竹山县| 东乌珠穆沁旗| 香河县| 雷波县| 安国市| 东明县| 宁强县| 金湖县| 开封县| 永平县| 威远县| 内江市| 文登市| 钟山县| 宜城市| 宁德市| 西丰县| 东乡| 彭山县| 长垣县| 上犹县| 韩城市| 民丰县| 仪征市| 合水县| 兴安盟| 揭阳市| 巴彦县| 宜章县| 中西区| 仙游县| 济宁市| 甘南县| 曲周县|