pyAI-K210音频播放wav音频

前言

由于 pyAI-K210 开发套件有 LCD 和音视频功能,那麽我们完全可以打造一个
音频播放器了。可以理解成早期的 MP4。配合外置音箱,你甚至可以打造自己的
多媒体播放器。

实验平台

pyAI-K210 开发套件+音频模块+sd 卡。

实验目的

MicroPython 实现编程实现视频播放。

实验讲解

音视频解码是一个复杂的过程,但 K210 底层 MicroPython 库写好后,着重应用来编程就变得非常简单了。和以往一样,我们只需要熟悉模块用法即可。

本实验实验 01Studio 音频模块,基于 PAM8403 的一款 D 类功放 IC,和麦克
风一样使用 I2S 接口通信,这里不再重复 I2S 内容。
audio模块函数说明链接: audio(音频) - Sipeed Wiki

参考代码如下

'''
实验名称:pyAI-K210音频播放wav音频
版本:v1.0
日期:2024-4-12
翻译和注释:01Studio
说明:wav 音频播放。

'''

from fpioa_manager import *
from Maix import I2S, GPIO
import audio
# 假设音频使能引脚编号为32
AUDIO_PA_EN_PIN = 32
# 注册音频使能引脚
if AUDIO_PA_EN_PIN:
    fm.register(AUDIO_PA_EN_PIN, fm.fpioa.GPIO1, force=True)
    audio_en = GPIO(GPIO.GPIO1, GPIO.OUT)
    audio_en.value(1)
# 注册I2S接口引脚
fm.register(34, fm.fpioa.I2S0_OUT_D1)
fm.register(35, fm.fpioa.I2S0_SCLK)
fm.register(33, fm.fpioa.I2S0_WS)
# 初始化I2S设备
wav_dev = I2S(I2S.DEVICE_0)
# 初始化音频播放器并设置音量
player = audio.Audio(path="/sd/6.wav")
player.volume(80)
# 读取音频信息
wav_info = player.play_process(wav_dev)
print("wav file head information: ", wav_info)
# 根据音频信息配置I2S
wav_dev.channel_config(wav_dev.CHANNEL_1, I2S.TRANSMITTER,
                       resolution=I2S.RESOLUTION_16_BIT,
                       cycles=I2S.SCLK_CYCLES_32,
                       align_mode=I2S.RIGHT_JUSTIFYING_MODE)
wav_dev.set_sample_rate(wav_info[1])
# 循环播放音频
while True:
    ret = player.play()
    if ret is None:
        print("format error")
        break
    elif ret == 0:
        print("end")
        break
# 在音频文件加载完成后打印"ok"
print("ok")
player.finish()

实验结果

本实验播放的音频是6.wav,文件在本例程文件夹中,先将该文件拷
贝到 sd 卡。然后将 sd 卡插到 pyAI-K210。
接上 01Studio 音频模块,运行本实验程序代码,可以见到串口终端打印了
wav音频信息后,开发板便开始播放音频。
image

01Studio 音频模块支持扬声器外接,标准 3.5mm 音频接口,我们也可以外
接扬声器播放。

wav音频压缩包文件

6.zip (745.4 KB)

总结

本节学习了音频播放应用,可以看到 MicroPython 编程让 K210 上的音频播
放变得非常简单,而且流畅度也很棒,有了这个技能,我们可以打造自己的音频
播放器。