如何在Python中播放和录制音频?代码实现示例

2021年11月17日14:36:12 发表评论 1,217 次浏览

Python如何播放和录制音频?本文带你了解如何在 Python 中使用不同的库(如 Playsound、Pydub 和 PyAudio)播放和录制声音文件。

如何在Python中播放和录制音频?许多应用程序可以录制你的声音并播放声音,如果你也想这样做,那么你来对地方了,在本教程中,我们将使用不同的 Python 库在 Python 中播放和录制音频.

让我们安装本教程所需的库:

pip3 install playsound pyaudio pydub ffmpeg-python

Python播放音频:音频播放器

首先,我们将从这里最简单的模块开始,playsound

from playsound import playsound

playsound("audio_file.mp3")

是的,这就是这个模块所需要的,它基本上是一个纯 Python、跨平台、单一功能的模块。该文件说,WAV和MP3扩展已知的工作,它可能为其他格式正常工作。

playsound()函数播放音频文件中的声音并阻塞直到文件读取完成,你可以通过block=False使函数异步运行。

另一种选择是使用Pydub库,Python播放和录制音频示例代码如下:

from pydub import AudioSegment
from pydub.playback import play

# read MP3 file
song = AudioSegment.from_mp3("audio_file.mp3")
# song = AudioSegment.from_wav("audio_file.wav")
# you can also read from other formats such as MP4
# song = AudioSegment.from_file("audio_file.mp4", "mp4")
play(song)

注意:你需要在你的机器上安装FFmpeg才能使用支持 FFmpeg 支持的所有格式的AudioSegment.from_file()函数。

Python如何播放和录制音频?Pydub 是一个非常流行的库,因为它不仅用于播放声音,你还可以将其用于不同的目的,例如转换音频文件、切片音频、增大或减小音量等等,请查看他们的存储库以获取更多信息。

如果你想使用 PyAudio 播放音频,请查看此链接。

相关: 如何在 Python 中从视频中提取音频。

Python录制音频:录音机

如何在Python中播放和录制音频?为了录制语音,我们将使用 PyAudio 库,因为它是最方便的方法:

import pyaudio
import wave

# the file name output you want to record into
filename = "recorded.wav"
# set the chunk size of 1024 samples
chunk = 1024
# sample format
FORMAT = pyaudio.paInt16
# mono, change to 2 if you want stereo
channels = 1
# 44100 samples per second
sample_rate = 44100
record_seconds = 5
# initialize PyAudio object
p = pyaudio.PyAudio()
# open stream object as input & output
stream = p.open(format=FORMAT,
                channels=channels,
                rate=sample_rate,
                input=True,
                output=True,
                frames_per_buffer=chunk)
frames = []
print("Recording...")
for i in range(int(44100 / chunk * record_seconds)):
    data = stream.read(chunk)
    # if you want to hear your voice while recording
    # stream.write(data)
    frames.append(data)
print("Finished recording.")
# stop and close stream
stream.stop_stream()
stream.close()
# terminate pyaudio object
p.terminate()
# save audio file
# open the file in 'write bytes' mode
wf = wave.open(filename, "wb")
# set the channels
wf.setnchannels(channels)
# set the sample format
wf.setsampwidth(p.get_sample_size(FORMAT))
# set the sample rate
wf.setframerate(sample_rate)
# write the frames as bytes
wf.writeframes(b"".join(frames))
# close the file
wf.close()

上面的Python播放和录制音频示例代码中,它基本上初始化了PyAudio对象,然后我们打开了一个流对象,允许我们使用stream.read()方法从麦克风录音。录制完成后,我们使用内置的wave模块将那个WAV音频文件写入磁盘。

当你在p.open()方法中设置input=True时,你将能够使用stream.read()从麦克风读取。此外,当你设置output=True 时,你将能够使用stream.write()写入扬声器。

结论

Python如何播放和录制音频?在本教程中,你学习了如何使用playsoundPydubPyAudio库播放音频文件以及使用 PyAudio 录制语音。

对你来说一个巨大的挑战是将它与屏幕录像机结合起来,你会想出一个同时记录你的声音和屏幕的 Python 工具,你需要使用一个记录音频的线程,另一个用于屏幕录音师,祝你好运!

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: