| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- --- 模块功能:音频功能测试.
- -- @author openLuat
- -- @module audio.testAudio
- -- @license MIT
- -- @copyright openLuat
- -- @release 2018.03.19
- module(..., package.seeall)
- -- require"record"
- require "audio"
- require "common"
- require "pins"
- local FILE = "/record.pcm"
- -- 每次读取的录音文件长度
- local RCD_READ_UNIT = 4096
- -- rcdoffset:当前读取的录音文件内容起始位置
- -- rcdsize:录音文件总长度
- -- rcdcnt:当前需要读取多少次录音文件,才能全部读取
- local rcdoffset, rcdsize, rcdcnt
- local recordBuf = ""
- --[[脚本测试逻辑:
- --基于724 A13开发板,mic输入,spk输出;
- --间隔4S,TTS循环播放“上海科技有限公司欢迎您123456上海科技有限公司欢迎您”,
- --TTS播放过程中,手动拉高GPIO19,触发gpio19上升沿中断,
- --调用audio.stop停止播放TTS,开始对讲测试,对讲测试结束,继续播放TTS
- --]]
- -- 流录音
- function recordCb(result, size, tag)
- log.info("testRecord.rcdcb", result, size, tag)
- if tag == "STREAM" then
- local s = audiocore.streamrecordread(size)
- log.info("MICDATA", string.toHex(s)) ---打印录音数据流数据
- audiocore.pocstreamplay(s) ---读录音数据流数据
- ---全双工对讲流式播放音频数据
- else
- log.info("poc stream record end")
- end
- end
- rtos.on(rtos.MSG_RECORD,
- function(msg) ---注册外部消息的处理函数,rtos.MSG_RECORD录音状态
- log.info("record.MSG_RECORD", msg.record_end_ind, msg.record_error_ind)
- if msg.record_error_ind then recordCb(false, 0, "END") end
- if msg.record_end_ind then
- recordCb(true, recordType == "FILE" and io.fileSize(FILE) or 0, "END")
- end
- end)
- rtos.on(rtos.MSG_STREAM_RECORD,
- function(msg) ---rtos.MSG_STREAM_RECORD流录音长度
- log.info("record.MSG_STREAM_RECORD", msg.wait_read_len)
- recordCb(true, msg.wait_read_len, "STREAM")
- end)
- -- recordType = "FILE"
- recordType = "STREAM"
- sys.taskInit(function()
- -- audiocore.pocstart(audiocore.AMR, 1) ----打开全双工对讲
- sys.wait(3000)
- function gpio19IntFnc(msg)
- log.info("testGpioSingle.gpio19IntFnc", msg, getGpio19Fnc())
- -- 上升沿中断
- if msg == cpu.INT_GPIO_POSEDGE then
- audio.stop(function() log.info("STOP") end)
- else
- end
- end
- -- GPIO19配置为中断,可通过getGpio19Fnc()获取输入电平,产生中断时,自动执行gpio19IntFnc函数
- getGpio19Fnc = pins.setup(pio.P0_19, gpio19IntFnc)
- audio.play(1, "TTS",
- "上海科技有限公司欢迎您123456上海科技有限公司欢迎您",
- 1, function(result)
- log.info("TTS.AUDIO_PLAY_IND", result)
- if result == 5 then
- audiocore.pocstart(audiocore.AMR, 1) ----打开全双工对讲
- audio.setVolume(5) ---设置音量
- log.info("PocTest Start")
- recordBuf = ""
- audiocore.pocstreamrecord(10) -- 全双工对讲流录音接口,录音时长10S
- sys.wait(10000)
- audiocore.pocstop() ---全双工对讲停止录音
- audio.play(1, "TTS", "重新开始一次播放测试", 2, nil)
- elseif result == 0 then
- audio.play(1, "TTS", "上次TTS正常播放", 2, nil)
- else
- log.info("testTTS.fail", result)
- end
- end, true, 5000)
- end)
|