K210(SiPEED MaixBit)MicroPython使用参考(五、录音到SD卡)

1.首先确定K210的SD卡工作正常,上电后显示“SDCard is mount,use SD!”,如下图所示:K210(SiPEED MaixBit)MicroPython使用参考(五、录音到SD卡)_第1张图片

另外,要确保使用带语音功能的固件,可按照以下准备:

1)固件更新工具Kflash_gui 1.6.5_2:kflash_gui_v1.6.5_2_windows.7z_kflash_gui下载-深度学习文档类资源-CSDN文库或

下载站 - Sipeed33

2)带语音功能简化版固件0.6.2_78:

http://cn.dl.sipeed.com/fileList/MAIX/MaixPy/release/master/maixpy_v0.6.2_77_g11806960d/maixpy_v0.6.2_77_g11806960d_minimum_speech_with_ide_support.bin

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

你可能感兴趣的:(Python,K210,语音识别,人工智能)