testRecordSpeexStream.lua 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. --- 模块功能:录音功能测试.
  2. -- @author openLuat
  3. -- @module record.testRecord
  4. -- @license MIT
  5. -- @copyright openLuat
  6. -- @release 2018.03.27
  7. module(...,package.seeall)
  8. require"record"
  9. require"audio"
  10. --local uartID = 1
  11. --uart.setup(uartID,115200,8,uart.PAR_NONE,uart.STOP_1)
  12. local recordBuf = ""
  13. --[[
  14. 函数名:rcdcb
  15. 功能 :录音结束后的回调函数
  16. 参数 :
  17. result:录音结果,true表示成功,false或者nil表示失败
  18. size:number类型,本次上报的录音数据流的大小,单位是字节,在result为true时才有意义
  19. tag:string类型,"STREAM"表示录音流数据通知,"END"表示录音结束
  20. 返回值:无
  21. ]]
  22. function rcdcb(result,size,tag)
  23. log.info("testRecord.rcdcb",result,size,tag)
  24. if tag=="STREAM" then
  25. local s = audiocore.streamrecordread(size)
  26. recordBuf = recordBuf..s
  27. --uart.write(uartID,s)
  28. else
  29. record.delete() --释放record资源
  30. log.info("record.spx streamplay totalLen",recordBuf:len())
  31. --audiocore.streamplay返回接收的buffer长度
  32. --此处并没有将录音数据全部播放完整
  33. log.info("record.spx streamplay acceptLen",audiocore.streamplay(audiocore.SPX,recordBuf))
  34. sys.timerStart(audiocore.stop,6000)
  35. recordBuf = ""
  36. sys.timerStart(record.start,8000,10,rcdcb,"STREAM",1,1,4)
  37. end
  38. end
  39. --sys.timerLoopStart(function() log.info("rcdReadSize",rcdReadSize) end,1000)
  40. --5秒后,开始录音
  41. sys.timerStart(record.start,5000,10,rcdcb,"STREAM",1,1,4)