Audio Module
AudioModule 类实现播放、录音功能,并支持重采样。
它用于播放音频文件和流、从麦克风录制音频以及在不同的采样率之间进行转换。
支持以下产品:
UIFLOW2 应用示例
播放 WAV 文件
在 UiFlow2 中打开 cores3_play_wav_example.m5f2 项目。
此示例从文件系统读取音频文件并播放。
UiFlow2 代码块:
示例输出:
None
播放控制
在 UiFlow2 中打开 cores3_playback_controls_example.m5f2 项目。
此示例演示如何使用 AudioModule 类控制播放。
播放音频 1 秒,暂停 1 秒,然后继续播放。
UiFlow2 代码块:
示例输出:
None
录制音频
在 UiFlow2 中打开 cores3_record_audio_example.m5f2 项目。
此示例从麦克风录制音频并将其保存到 PCM 缓冲区,然后通过扬声器播放。
UiFlow2 代码块:
示例输出:
None
MicroPython 应用示例
播放 WAV 文件
此示例从文件系统读取音频文件并播放。
MicroPython 代码块:
1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from module import AudioModule 9import time 10 11 12audio_0 = None 13 14 15def setup(): 16 global audio_0 17 18 M5.begin() 19 Widgets.fillScreen(0x222222) 20 21 audio_0 = AudioModule( 22 0, 23 16000, 24 i2s_sck=7, 25 i2s_ws=6, 26 i2s_di=14, 27 i2s_do=13, 28 i2s_mclk=0, 29 work_mode=AudioModule.MODE_HEADPHONE, 30 offset=False, 31 mux=AudioModule.MUX_NATIONAL, 32 ) 33 audio_0.play_wav_file("/flash/res/audio/66.wav") 34 time.sleep(1) 35 audio_0.pause() 36 time.sleep(1) 37 audio_0.resume() 38 39 40def loop(): 41 global audio_0 42 M5.update() 43 44 45if __name__ == "__main__": 46 try: 47 setup() 48 while True: 49 loop() 50 except (Exception, KeyboardInterrupt) as e: 51 try: 52 audio_0.deinit() 53 from utility import print_error_msg 54 55 print_error_msg(e) 56 except ImportError: 57 print("please update to latest firmware")
示例输出:
None
播放控制
此示例演示如何使用 AudioModule 类控制播放。
播放音频 1 秒,暂停 1 秒,然后继续播放。
MicroPython 代码块:
1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from module import AudioModule 9import time 10 11 12audio_0 = None 13 14 15def setup(): 16 global audio_0 17 18 M5.begin() 19 Widgets.fillScreen(0x222222) 20 21 audio_0 = AudioModule( 22 0, 23 16000, 24 i2s_sck=7, 25 i2s_ws=6, 26 i2s_di=14, 27 i2s_do=13, 28 i2s_mclk=0, 29 work_mode=AudioModule.MODE_HEADPHONE, 30 offset=False, 31 mux=AudioModule.MUX_NATIONAL, 32 ) 33 audio_0.play_wav_file("/flash/res/audio/66.wav") 34 time.sleep(1) 35 audio_0.pause() 36 time.sleep(1) 37 audio_0.resume() 38 39 40def loop(): 41 global audio_0 42 M5.update() 43 44 45if __name__ == "__main__": 46 try: 47 setup() 48 while True: 49 loop() 50 except (Exception, KeyboardInterrupt) as e: 51 try: 52 audio_0.deinit() 53 from utility import print_error_msg 54 55 print_error_msg(e) 56 except ImportError: 57 print("please update to latest firmware")
示例输出:
None
录制音频
此示例从麦克风录制音频并将其保存到 PCM 缓冲区,然后通过扬声器播放。
MicroPython 代码块:
1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from module import AudioModule 9 10 11audio_0 = None 12 13 14def setup(): 15 global audio_0 16 17 M5.begin() 18 Widgets.fillScreen(0x222222) 19 20 audio_0 = AudioModule( 21 0, 22 16000, 23 i2s_sck=7, 24 i2s_ws=6, 25 i2s_di=14, 26 i2s_do=13, 27 i2s_mclk=0, 28 work_mode=AudioModule.MODE_HEADPHONE, 29 offset=False, 30 mux=AudioModule.MUX_NATIONAL, 31 ) 32 audio_0.record(rate=16000, bits=16, channel=AudioModule.STEREO, duration=3000) 33 audio_0.play_raw( 34 audio_0.pcm_buffer, rate=16000, bits=16, channel=AudioModule.STEREO, duration=-1 35 ) 36 37 38def loop(): 39 global audio_0 40 M5.update() 41 42 43if __name__ == "__main__": 44 try: 45 setup() 46 while True: 47 loop() 48 except (Exception, KeyboardInterrupt) as e: 49 try: 50 audio_0.deinit() 51 from utility import print_error_msg 52 53 print_error_msg(e) 54 except ImportError: 55 print("please update to latest firmware")
示例输出:
None
API参考
Class AudioModule
- class module.audio.AudioModule(i2s_port, sample_rate=16000, i2s_sck=19, i2s_ws=27, i2s_di=34, i2s_do=2, i2s_mclk=0, work_mode=1, offset=1, mux=0)
基类:
object初始化 Audio Module。
- 参数:
i2s_port – I2S 端口号。
sample_rate – 采样率(默认为 16000)。
i2s_sck – I2S时钟引脚。
i2s_ws – I2S 字选择引脚。
i2s_di – I2S数据输入引脚。
i2s_do – I2S数据输出引脚。
i2s_mclk – I2S 主时钟引脚。
work_mode – 工作模式(0:耳机,1:线路输入)。
offset – 一般来说,使用 Line In 时,offset 为 False;如果输入连接了 ADC 麦克风,offset 为 True。(仅在 Line In 模式下有效)。
mux – 选择要使用的 TRRS 插头。(默认为 MUX_NATIONAL)。
UiFlow2 代码块:

MicroPython 代码块:
from module import AudioModule audio_0 = AudioModule(0, 16000, i2s_sck=7, i2s_ws=6, i2s_di=14, i2s_do=13, i2s_mclk=0, work_mode=AudioModule.MODE_HEADPHONE, offset=False, mux=AudioModule.MUX_NATIONAL)
- MUX_NATIONAL = 0
国家标准音频模式 (OMTP)
- MUX_AMERICAN = 1
美国标准音频模式(CTIA)
- MODE_LINE = 0
线路输入模式
- MODE_HEADPHONE = 1
耳机模式
- MONO = 1
单声道
- STEREO = 2
立体声
- play_wav_file(file)
播放 WAV 文件。
- 参数:
file (str) – 要播放的 WAV 文件的路径。
- 返回:
None
- 返回类型:
None
UiFlow2 代码块:

MicroPython 代码块:
audio_0.play_wav_file("/flash/res/audio/test.wav")
- tone(freq, duration)
播放简单的音调声音。
UiFlow2 代码块:

MicroPython 代码块:
audio_0.tone(2000, 50)
- play_wav(buf, duration=-1)
播放 WAV 缓冲区。
- 参数:
- 返回:
None
- 返回类型:
None
UiFlow2 代码块:

MicroPython 代码块:
audio_0.play_wav(wav_buffer, duration=1000)
- play_raw(buf, rate=16000, bits=16, channel=2, duration=-1)
播放 pcm 缓冲区。
- 参数:
- 返回:
None
- 返回类型:
None
UiFlow2 代码块:

MicroPython 代码块:
audio_0.play_raw(pcm_buffer, rate=16000, bits=16, channel=2, duration=1000)
- pause()
暂停播放。
UiFlow2 代码块:

MicroPython 代码块:
audio.tone(2000, 100) time.sleep(0.05) audio_0.pause() time.sleep(0.05) audio_0.resume()
- 返回类型:
None
- resume()
继续播放。
UiFlow2 代码块:

MicroPython 代码块:
audio.tone(2000, 100) time.sleep(0.05) audio_0.pause() time.sleep(0.05) audio_0.resume()
- stop()
停止播放。
UiFlow2 代码块:

MicroPython 代码块:
audio.tone(2000, 100) time.sleep(0.05) audio_0.stop()
- get_volume()
获取扬声器音量级别。
- 返回:
音量级别(0-100)。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
audio_0.get_volume()
- set_volume(volume)
设置扬声器音量。
- 参数:
volume (int) – 音量级别(0-100)。
UiFlow2 代码块:

MicroPython 代码块:
audio_0.set_volume(50)
- record_wav_file(path, rate=16000, bits=16, channel=2, duration=3000)
将音频录制为 WAV 文件。
- 参数:
UiFlow2 代码块:

MicroPython 代码块:
audio_0.record_wav_file("/flash/res/audio/test.wav", rate=16000, bits=16, channel=2, duration=3000)
- record(rate=16000, bits=16, channel=2, duration=3000)
将音频录制到 PCM 缓冲区。
- 参数:
UiFlow2 代码块:

MicroPython 代码块:
audio_0.record(rate=16000, bits=16, channel=2, duration=3000)
- property pcm_buffer: bytes
获取 PCM 缓冲区。
- 返回:
PCM缓冲区。
UiFlow2 代码块:

MicroPython 代码块:
audio_0.pcm_buffer
- set_color(num, color)
设置 RGB LED 颜色。
UiFlow2 代码块:

MicroPython 代码块:
audio_0.set_color(0, 0xFF0000)





