02-Media-3-audio.py 音频输入输出,录音、播放、实时回放演示

发布于:2025-09-04 ⋅ 阅读:(16) ⋅ 点赞:(0)

audio.py 是一个音频输入输出的示例程序,包含录音、播放、实时回放和录音后播放的功能。
程序使用media模块和pyaudio模块进行音频处理,使用wave模块读写wav文件。运行此程序需要SD卡,用于存储保存的wav录音文件,以及播放存储的音频文件。

运行主函数中的相应行,可以选择测试不同的功能:

  • record_audio() - 仅录制

  • play_audio() - 仅播放

  • loop_audio() - 实时回放

  • audio_recorder() - 录制后播放(默认)

程序展示了完整的音频处理流程,包括录制、保存、加载和播放音频文件,以及实时音频处理功能,核心的几项函数功能如下:

  1. record_audio(filename, duration)函数:
    参数:filename为保存的wav文件名,duration为录制时长(秒)。
    功能:录制指定时长的音频并保存为wav文件。
    步骤:
    - 设置音频参数(CHUNK、格式、声道数、采样率)。
    - 初始化PyAudio和MediaManager(用于vb buffer)。
    - 打开音频输入流,设置音量,并启用自动噪声抑制(ANS)。
    - 循环读取音频数据并存入列表。
    - 将列表中的数据写入wav文件。
    - 清理资源(停止流、关闭流、终止PyAudio、释放vb buffer)。

  2. play_audio(filename)函数:
    参数:filename为要播放的wav文件名。
    功能:播放指定的wav文件。
    步骤:
    - 打开wav文件并读取其参数(采样宽度、声道数、采样率)。
    - 初始化PyAudio和MediaManager。
    - 打开音频输出流,设置音量。
    - 从wav文件中读取数据并写入音频输出流进行播放。
    - 清理资源。

  3. loop_audio(duration)函数:
    参数:duration为回放时长(秒)。
    功能:实时采集音频并立即播放(实时回放)。
    步骤:
    - 设置音频参数(与record_audio类似)。
    - 初始化PyAudio和MediaManager。
    - 同时打开音频输入流和输出流,并设置各自的音量,输入流启用ANS。
    - 从输入流读取数据并立即写入输出流。
    - 清理资源。

  4. audio_recorder(filename, duration)函数:
    参数:filename为保存的wav文件名,duration为录制时长(秒)。
    功能:先录制音频保存为wav文件,然后播放这个wav文件。
    步骤:
    - 设置音频参数(这里设置为单声道)。
    - 初始化PyAudio和MediaManager。
    - 录制音频部分(与record_audio类似,但声道数为1)。
    - 播放音频部分(与play_audio类似,但是使用同一个PyAudio实例,且不重复初始化MediaManager)。
    - 清理资源。

audio_recorder('/sdcard/examples/test.wav', 15)

运行效果:使用板载麦克风进行录制15秒音频,然后使用外接喇叭进行播放。

同时会在虚拟U盘中保存录音文件如下:

audio_recorder('/sdcard/examples/test.wav', 15) #录制15秒音频并播放

#---------------------------------------------------------
实际运行输出结果:
audio sample start
vb common pool count 3
input volume : (70, 85)
enable audio 3a:ans
start record...
stop record...
output volume : (85, 85)
start p

网站公告

今日签到

点亮在社区的每一天
去签到