商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 软件教程 > 如何用Python实现音频播放与录音

如何用Python实现音频播放与录音

  发布于2026-06-02 阅读(0)

扫一扫,手机访问

说到音频处理,Python绝对是个好帮手。不管你是想做个简单的音乐播放器,还是需要录制一段声音,这门语言都能帮你轻松搞定。下面直接进入正题,看看具体怎么操作。

音频播放

要实现音频播放,Python生态里有不少现成的库可用。最简单粗暴的方式是用playsound,安装之后两行代码就能出声:

from playsound import playsound
playsound('your_audio_file.mp3')

your_audio_file.mp3换成实际文件路径,剩下的交给库就好。当然,这种方式的控制力有限,适合快速验证。

如果对播放过程有更细颗粒度的要求——比如调节音量、控制声道、处理实时流——那就要用pyaudio了。它提供了底层接口,播放WA V格式文件时,需要配合wa ve模块一起用:

import pyaudio
import wa ve

# 打开音频文件
wf = wa ve.open('your_audio_file.wa v', 'rb')
# 初始化pyaudio
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(1024)
while data:
    stream.write(data)
    data = wf.readframes(1024)

# 收尾清理
stream.stop_stream()
stream.close()
p.terminate()

逻辑不复杂:先读取WA V文件参数,然后用这些参数打开一个输出流,循环读取数据块写入流中,最后关闭释放资源。这种模式也是很多音频处理工具的基础。

音频录音

有放就有录。pyaudio同样能搞定录音,而且思路跟播放挺对称——无非是把输出流换成输入流。下面是一个5秒录音的例子:

import pyaudio
import wa ve

# 参数设置
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 1024
RECORD_SECONDS = 5
WA VE_OUTPUT_FILENAME = "recorded_audio.wa v"

# 初始化pyaudio
p = pyaudio.PyAudio()

# 打开输入流
stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)

print("* recording")

frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
    data = stream.read(CHUNK)
    frames.append(data)

print("* done recording")

# 停止并关闭
stream.stop_stream()
stream.close()
p.terminate()

# 保存为WA V文件
wf = wa ve.open(WA VE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()

注意几个关键点:FORMAT用了16位采样,RATE设为44100Hz(CD音质),CHUNK是缓冲区大小。循环里不断从麦克风读取数据块,拼接到frames列表,最后用wa ve模块写入文件。如果想录更长时间,改RECORD_SECONDS就行。

从播放到录音,Python的音频处理能力覆盖了最基本也最常用的场景。无论是做个语音助手的前端,还是为多媒体项目搭个基础工具,这些代码都足够作为起点。下一步,想折腾实时处理、混音、或者音频分析,也都是在这些基础上延伸出来的事儿。

本文转载于:https://www.91danji.com/soft/1434191.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注