diff --git a/docs/Advanced_development/zh/QuecPythonSub/Audio.md b/docs/Advanced_development/zh/QuecPythonSub/Audio.md index 99290ca8b9e5993992ce70302632e2a9f8a22f34..f0efa245b37991a826078eb1f3173cb61a090111 100644 --- a/docs/Advanced_development/zh/QuecPythonSub/Audio.md +++ b/docs/Advanced_development/zh/QuecPythonSub/Audio.md @@ -161,6 +161,10 @@ if __name__ == "__main__": ``` +## 位深度与采样率 + +待补充 + ## 配套代码 diff --git a/docs/Advanced_development/zh/QuecPythonSub/code/record.py b/docs/Advanced_development/zh/QuecPythonSub/code/record.py index 9322060ac3f072a86444ae3cf294d5dec31066f4..aac4c1f5cb64553edbaca28597e723cc1691035c 100644 --- a/docs/Advanced_development/zh/QuecPythonSub/code/record.py +++ b/docs/Advanced_development/zh/QuecPythonSub/code/record.py @@ -4,6 +4,7 @@ import utime import checkNet import audio from machine import Pin + ''' 下面两个全局变量是必须有的,用户可以根据自己的实际项目修改下面两个全局变量的值, 在执行用户代码前,会先打印这两个变量的值。 @@ -19,17 +20,20 @@ checknet = checkNet.CheckNetwork(PROJECT_NAME, PROJECT_VERSION) aud = audio.Audio(0) tts = audio.TTS(0) +# 设置播放音量大小 +tts.setVolume(9) +aud.setVolume(11) ''' 外接喇叭播放录音文件,需要下面这一句来使能 ''' -audio_EN = Pin(Pin.GPIO11, Pin.OUT, Pin.PULL_PD, 1) - +audio_EN = Pin(Pin.GPIO11, Pin.OUT, Pin.PULL_PD, 1) # 官方板使用 def record_callback(args): print('file_name:{}'.format(args[0])) print('file_size:{}'.format(args[1])) print('record_sta:{}'.format(args[2])) + print('11111') record_sta = args[2] if record_sta == 3: print('The recording is over, play it') @@ -39,7 +43,6 @@ def record_callback(args): print('The recording failure.') tts.play(1, 0, 2, '录音失败') - if __name__ == '__main__': ''' 手动运行本例程时,可以去掉该延时,如果将例程文件名改为main.py,希望开机自动运行时,需要加上该延时, @@ -54,11 +57,25 @@ if __name__ == '__main__': ''' # checknet.wait_network_connected() - # 用户代码 - '''######################【User code star】###################################################''' - print('the recording will begin in 2 seconds. Please be ready!') + tts.play(1, 0, 2, '录音实验,录音时间四秒') utime.sleep(2) - print('start recording!') - record = audio.Record('recordfile.wav', record_callback) - record.start(10) - '''######################【User code end 】###################################################''' + print("录音实验, 一秒后开始录音, 录音时间四秒. ") + utime.sleep(1) + record = audio.Record() + aaa = record.start("recordfile.wav", 4) + + utime.sleep(5) + if aaa == 0: + tts.play(1, 0, 2, '录音结束,准备播放录音文件') + print("录音成功, 准备播放录音文件") + utime.sleep(1) + bbb = aud.play(1, 0, 'u:/recordfile.wav') + if bbb == 1: + tts.play(1, 0, 2, '播放完成') + print("播放完成") + else : + tts.play(1, 0, 2, '播放失败') + print("播放失败") + else : + print("录音失败") + diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/QuecPython_Sub_Record01.png b/docs/Advanced_development/zh/QuecPythonSub/media/QuecPython_Sub_Record01.png index 8024529ec49e979ba37a54014ff66c3b4d9005f6..ca191df2f3a042f9ed9e9767b42063e72064a065 100644 Binary files a/docs/Advanced_development/zh/QuecPythonSub/media/QuecPython_Sub_Record01.png and b/docs/Advanced_development/zh/QuecPythonSub/media/QuecPython_Sub_Record01.png differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/QuecPython_Sub_Record02.png b/docs/Advanced_development/zh/QuecPythonSub/media/QuecPython_Sub_Record02.png index 4028a1700d8b89ea01e1f257f6eae5d1b3e4250c..45f57cb7455e5294cfd3963c1ffff21cc68d85ac 100644 Binary files a/docs/Advanced_development/zh/QuecPythonSub/media/QuecPython_Sub_Record02.png and b/docs/Advanced_development/zh/QuecPythonSub/media/QuecPython_Sub_Record02.png differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/record.md b/docs/Advanced_development/zh/QuecPythonSub/record.md index 8fa66c081194325f6f0e7952d221a4cdae8c090f..22ddbb560892d842458dbdb528376f1b50f5160c 100644 --- a/docs/Advanced_development/zh/QuecPythonSub/record.md +++ b/docs/Advanced_development/zh/QuecPythonSub/record.md @@ -5,7 +5,7 @@ ## 录音开发 -文档主要基于 EC600S-CN 介绍如何使用 QuecPython 的录音功能 。同时说明录音功能的相关 API 的用法。具体的 API 详解请参考[QuecPython-audio-Record](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=record) +文档主要基于 EC600X_QuecPython_EVB_V1.2 开发板介绍如何使用 QuecPython 的录音功能 。 ### 硬件设计 @@ -21,167 +21,20 @@ 注意事项 -(1) 焊接 MIC 时,要注意区分正负极,咪头正负极区分方法如下: +(1) V1.2开发板自带咪头,V1.1开发板需要焊接咪头。焊接 MIC 时,要注意区分正负极,咪头正负极区分方法如下: 咪头两个引脚中,有铜皮连接到了外壳的那个引脚就是负极,或者用万用表量,与外壳连通的引脚就是负极。 ![QuecPython_Sub_Record03](media/QuecPython_Sub_Record03.png) 图3 咪头正负极说明 -(2) 外接喇叭播放录音文件时,请使用规格型号为 4Ω 3W 的喇叭。喇叭参数以及连接方法请参考 [QuecPython-驱动子系统-音频播放](https://python.quectel.com/doc/doc/Advanced_development/zh/QuecPythonSub/Audio.html) +(2) 外接喇叭播放录音文件时,请使用规格型号为 4Ω 3W 或者 8Ω 2W 的喇叭。喇叭参数以及连接方法请参考 [QuecPython-驱动子系统-音频播放](https://python.quectel.com/doc/doc/Advanced_development/zh/QuecPythonSub/Audio.html) ### 软件设计 #### 录音 API 说明 -**创建对象** - -> ***import audio*** -> -> ***record_obj = audio.Reocrd(filename, callback)*** - -参数说明: - -**filename** :保存录音的文件名 - -**callback** :录音回调函数,用于通知用户录音结果、录音文件大小以及文件名 回调函数形式如下: - -```python -def record_callback(args): - print('file_name:{}'.format(args[0])) - print('file_size:{}'.format(args[1])) - print('record_sta:{}'.format(args[2])) -``` - - - -**开始录音** - -> ***record_obj.start(seconds)*** - -参数说明: - -**seconds** :指定录音时长,单位 s - -返回值: - -**0** :正常 - -**-1** : 文件覆盖失败 - -**-2** : 文件打开失败 - -**-3** : 文件正在使用 - -**-4** : 通道设置错误(只能设置 0 或 1) - -**-5** : 定时器资源申请失败 - - - -**停止录音** - -> ***record_obj.stop()*** - -参数说明:无参数 。 - -返回值: 无返回值 。 - - - -**判断录音文件是否存在** - -> ***record_obj.exists()*** - -参数说明:无参数 - -返回值: - -**true** :文件存在 - -**false** :文件不存在 - - - -**获取录音文件保存的路径** - -> ***record_obj.getFilePath()*** - -参数说明:无参数 。 - -返回值: 返回 string 类型的录音文件保存路径。 - - - -**读取录音数据** - -> ***record_obj.getData(offset, size)*** - -参数说明: - -**offset** :偏移位置 - -**size** :读取的长度,单位字节 - -返回值: 正常返回读取的数据 ,失败返回错误码,如下 - -**-1** : 读取数据错误 - -**-2** : 文件打开失败 - -**-3** : 偏移量设置错误 - -**-4** : 文件正在使用 - -**-5** : 设置超出文件大小( offset+size > file_size) - - - -**读取录音文件大小** - -> ***record_obj.getSize()*** - -参数说明:无参数 。 - -返回值: - -成功返回录音文件大小( 此文件有 44byte 的文件头,所以比创建对象传入回调的值大 44),单位字节,失败返回错误码,如下 - -**-1** :获取文件 size 失败 **-2** : 文件打开失败 - -**-3** : 文件正在使用 - - - -**删除录音文件** - -> ***record_obj.Delete()*** - -参数说明:无参数 。 - -返回值: - -**0** :删除成功 - -**-1** :文件不存在 - -**-2** :文件正在使用 - - - -**判断是否正在处理录音** - -> ***record_obj.isBusy()*** - -参数说明:无参数 。 - -返回值: - -**0** :idle - -**1** :busy - - +录音功能的相关 API 的用法。具体的 API 详解请参考[QuecPython-audio-Record](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=record) ### 下载验证 @@ -194,6 +47,7 @@ import utime import checkNet import audio from machine import Pin + ''' 下面两个全局变量是必须有的,用户可以根据自己的实际项目修改下面两个全局变量的值, 在执行用户代码前,会先打印这两个变量的值。 @@ -209,17 +63,20 @@ checknet = checkNet.CheckNetwork(PROJECT_NAME, PROJECT_VERSION) aud = audio.Audio(0) tts = audio.TTS(0) +# 设置播放音量大小 +tts.setVolume(9) +aud.setVolume(11) ''' 外接喇叭播放录音文件,需要下面这一句来使能 ''' -audio_EN = Pin(Pin.GPIO11, Pin.OUT, Pin.PULL_PD, 1) - +audio_EN = Pin(Pin.GPIO11, Pin.OUT, Pin.PULL_PD, 1) # 官方板使用 def record_callback(args): print('file_name:{}'.format(args[0])) print('file_size:{}'.format(args[1])) print('record_sta:{}'.format(args[2])) + print('11111') record_sta = args[2] if record_sta == 3: print('The recording is over, play it') @@ -229,7 +86,6 @@ def record_callback(args): print('The recording failure.') tts.play(1, 0, 2, '录音失败') - if __name__ == '__main__': ''' 手动运行本例程时,可以去掉该延时,如果将例程文件名改为main.py,希望开机自动运行时,需要加上该延时, @@ -244,14 +100,27 @@ if __name__ == '__main__': ''' # checknet.wait_network_connected() - # 用户代码 - '''######################【User code star】########################################''' - print('the recording will begin in 2 seconds. Please be ready!') + tts.play(1, 0, 2, '录音实验,录音时间四秒') utime.sleep(2) - print('start recording!') - record = audio.Record('recordfile.wav', record_callback) - record.start(10) - '''######################【User code end 】########################################''' + print("录音实验, 一秒后开始录音, 录音时间四秒. ") + utime.sleep(1) + record = audio.Record() + aaa = record.start("recordfile.wav", 4) + + utime.sleep(5) + if aaa == 0: + tts.play(1, 0, 2, '录音结束,准备播放录音文件') + print("录音成功, 准备播放录音文件") + utime.sleep(1) + bbb = aud.play(1, 0, 'u:/recordfile.wav') + if bbb == 1: + tts.play(1, 0, 2, '播放完成') + print("播放完成") + else : + tts.play(1, 0, 2, '播放失败') + print("播放失败") + else : + print("录音失败") ``` diff --git a/docs/Advanced_development/zh/sidebar.yaml b/docs/Advanced_development/zh/sidebar.yaml index 7498a058626a102a6ec9272dbcd18cfa82137f21..05a65e9211c7a2261dd2ba66e5891317023426c3 100644 --- a/docs/Advanced_development/zh/sidebar.yaml +++ b/docs/Advanced_development/zh/sidebar.yaml @@ -46,11 +46,11 @@ items: items: - label: 音频播放 file: QuecPythonSub/Audio.md - - label: 录音开发 - file: QuecPythonSub/record.md - # - label: 录制音频 - label: TTS开发 file: QuecPythonSub/TTS.md + - label: 录音开发 + file: QuecPythonSub/record.md + # - label: 录制音频 - label: 外设调试 items: - label: LCD 调试流程