1.首先确定K210的SD卡工作正常,上电后显示“SDCard is mount,use SD!”,如下图所示:
另外,要确保使用带语音功能的固件,可按照以下准备:
1)固件更新工具Kflash_gui 1.6.5_2:kflash_gui_v1.6.5_2_windows.7z_kflash_gui下载-深度学习文档类资源-CSDN文库或
2)带语音功能简化版固件0.6.2_78:
2.本开发板板载硅麦型号为MSM261S4030H0R,查手册知其为标准I2S输出,rx.channel_config需设置为align_mode=I2S.STANDARD_MODE,被称之为飞利浦格式,有些语音设备,较常采用右对齐,也被称为日本格式,需设置为align_mode=I2S.RIGHT_JUSTIFYING_MODE。运行以下代码:
import image, lcd, time
import audio
from Maix import GPIO, I2S
from fpioa_manager import fm
# user setting
sample_rate = 16000
record_time = 8 #s,录音时间
# default seting
sample_points = 2048
wav_ch = 2 #双声道
fm.register(20,fm.fpioa.I2S0_IN_D0, force=True)
fm.register(19,fm.fpioa.I2S0_WS, force=True) # 19 on Go Board and Bit(new version)
fm.register(18,fm.fpioa.I2S0_SCLK, force=True) # 18 on Go Board and Bit(new version)
rx = I2S(I2S.DEVICE_0)
rx.channel_config(rx.CHANNEL_0, rx.RECEIVER, align_mode=I2S.STANDARD_MODE)
rx.set_sample_rate(sample_rate)
print(rx)
#init audio
recorder = audio.Audio(path="/sd/record.wav", is_create=True, samplerate=sample_rate)
queue = []
frame_cnt = record_time*sample_rate/sample_points
for i in range(frame_cnt):
tmp = rx.record(sample_points*wav_ch)
if len(queue) > 0:
ret = recorder.record(queue[0])
queue.pop(0)
rx.wait_record()
queue.append(tmp)
print(str(i) + ":" + str(time.ticks()))
recorder.finish()
3.一切正常,运行结束的话,会在SD卡根目录存成以"record.wav"命名的音频文件,时长8秒,可以在电脑里进行播放,实际上受MaixBit硬件限制,该音频只有右声道。由于wav未压缩,时长600秒(10分钟,设置record_time=600)的文件会有37M之大,如果要转成压缩格式(MP3、Opus、Ogg、AAC等),也许只有十分之一,这个作为以后的工作。
4.参考官方资料:audio(音频) 的使用 - Sipeed Wiki