testAudio.lua 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. --- 模块功能:音频功能测试.
  2. -- @author openLuat
  3. -- @module audio.testAudio
  4. -- @license MIT
  5. -- @copyright openLuat
  6. -- @release 2018.03.19
  7. module(...,package.seeall)
  8. --require"record"
  9. require"audio"
  10. require"common"
  11. --音频播放优先级,对应audio.play接口中的priority参数;数值越大,优先级越高,用户根据自己的需求设置优先级
  12. --PWRON:开机铃声
  13. --CALL:来电铃声
  14. --SMS:新短信铃声
  15. --TTS:TTS播放
  16. --REC:录音音频
  17. PWRON,CALL,SMS,TTS,REC = 4,3,2,1,0
  18. local function testCb(r)
  19. log.info("testAudio.testCb",r)
  20. end
  21. --播放音频文件测试接口,每次打开一行代码进行测试
  22. local function testPlayFile()
  23. --单次播放来电铃声,默认音量等级
  24. --audio.play(CALL,"FILE","/lua/call.mp3")
  25. --单次播放来电铃声,音量等级7
  26. --audio.play(CALL,"FILE","/lua/call.mp3",audiocore.VOL7)
  27. --单次播放来电铃声,音量等级7,播放结束或者出错调用testcb回调函数
  28. --audio.play(CALL,"FILE","/lua/call.mp3",audiocore.VOL7,testCb)
  29. --循环播放来电铃声,音量等级7,没有循环间隔(一次播放结束后,立即播放下一次)
  30. audio.play(CALL,"FILE","/lua/call.mp3",audiocore.VOL7,nil,true)
  31. --循环播放来电铃声,音量等级7,循环间隔为2000毫秒
  32. --audio.play(CALL,"FILE","/lua/call.mp3",audiocore.VOL7,nil,true,2000)
  33. end
  34. --播放tts测试接口,每次打开一行代码进行测试
  35. --audio.play接口要求TTS数据为UTF8编码,因为本文件编辑时采用的是UTF8编码,所以可以直接使用ttsStr,不用做编码转换
  36. --如果用户自己编辑脚本时,采用的不是UTF8编码,需要调用common.XXX2utf8接口进行转换
  37. local ttsStr = "上海合宙通信科技有限公司欢迎您"
  38. local function testPlayTts()
  39. --单次播放,默认音量等级
  40. --audio.play(TTS,"TTS",ttsStr)
  41. --单次播放,音量等级7
  42. --audio.play(TTS,"TTS",ttsStr,7)
  43. --单次播放,音量等级7,播放结束或者出错调用testcb回调函数
  44. --audio.play(TTS,"TTS",ttsStr,7,testCb)
  45. --循环播放,音量等级7,没有循环间隔(一次播放结束后,立即播放下一次)
  46. --audio.play(TTS,"TTS",ttsStr,7,nil,true)
  47. --循环播放,音量等级7,循环间隔为2000毫秒
  48. audio.play(TTS,"TTS",ttsStr,7,nil,true,2000)
  49. end
  50. --播放冲突测试接口,每次打开一个if语句进行测试
  51. local function testPlayConflict()
  52. if true then
  53. --循环播放来电铃声
  54. audio.play(CALL,"FILE","/lua/call.mp3",7,nil,true)
  55. --5秒钟后,循环播放开机铃声
  56. sys.timerStart(audio.play,5000,PWRON,"FILE","/lua/pwron.mp3",7,nil,true)
  57. end
  58. if false then
  59. --循环播放来电铃声
  60. audio.play(CALL,"FILE","/lua/call.mp3",audiocore.VOL7,nil,true)
  61. --5秒钟后,尝试循环播放新短信铃声,但是优先级不够,不会播放
  62. sys.timerStart(audio.play,5000,SMS,"FILE","/lua/sms.mp3",7,nil,true)
  63. end
  64. if false then
  65. --循环播放TTS
  66. audio.play(TTS,"TTS",ttsStr,7,nil,true)
  67. --10秒钟后,循环播放开机铃声
  68. sys.timerStart(audio.play,10000,PWRON,"FILE","/lua/pwron.mp3",7,nil,true)
  69. end
  70. if false then
  71. --循环播放录音
  72. audio.play(REC,"RECORD",1,7,nil,true)
  73. --5秒钟后,循环播放开机铃声
  74. sys.timerStart(audio.play,5000,PWRON,"FILE","/lua/pwron.mp3",7,nil,true)
  75. end
  76. end
  77. local function tesTtsNew()
  78. --设置优先级相同时的播放策略,1表示停止当前播放,播放新的播放请求
  79. audio.setStrategy(1)
  80. audio.play(TTS,"TTS",ttsStr,7)
  81. end
  82. --audio.setChannel(1)
  83. --每次打开下面的一种分支进行测试
  84. if true then
  85. if string.match(rtos.get_version(),"TTS") then
  86. sys.timerStart(testPlayTts,5000)
  87. --如果要测试tts播放时,请求播放新的tts,打开下面这段代码
  88. --sys.timerLoopStart(tesTtsNew,5000)
  89. else
  90. sys.timerStart(testPlayFile,5000)
  91. end
  92. else
  93. sys.timerStart(testPlayConflict,5000)
  94. --5秒后,开始录音6秒,之后进行播放冲突测试接口
  95. --sys.timerStart(record.start,5000,6,testPlayConflict)
  96. end
  97. --[[
  98. sys.taskInit(function()
  99. local vol = 1
  100. while true do
  101. log.info("vol",vol)
  102. --audio.play(CALL,"FILE","/lua/call.mp3",vol,function() sys.publish("PLAY_END") end)
  103. audio.play(TTS,"TTS",ttsStr,vol,function() sys.publish("PLAY_END") end)
  104. sys.waitUntil("PLAY_END")
  105. vol = (vol==7) and 1 or (vol+1)
  106. end
  107. end)
  108. ]]
  109. --[[
  110. sys.taskInit(function()
  111. while true do
  112. sys.wait(2000)
  113. --播放多arm文件方式
  114. local multiFile = {"/lua/alipay.amr","/lua/10.amr","/lua/2.amr","/lua/yuan.amr"}
  115. audio.play(1,"FILE",multiFile,7,function() sys.publish("armMultiTest") end)
  116. sys.waitUntil("armMultiTest")
  117. sys.wait(2000)
  118. --播放多pcm文件方式
  119. multiFile = {"/lua/alipay.pcm","/lua/10.pcm","/lua/8.pcm","/lua/yuan.pcm"}
  120. audio.play(1,"FILE",multiFile,7,function() sys.publish("armMultiTest") end)
  121. sys.waitUntil("armMultiTest")
  122. end
  123. end)
  124. ]]
  125. --支持audiocore.CLASS_AB和audiocore.CLASS_D两种
  126. --注意:烧录软件后,第一次开机后需要重启一次,设置才会生效
  127. --audiocore.setpa(audiocore.CLASS_AB)
  128. --[[
  129. sys.taskInit(function()
  130. while true do
  131. audio.play(TTS,"TTS","支付宝收款242425元",3,function() sys.publish("PLAY_END") end)
  132. sys.waitUntil("PLAY_END")
  133. audio.play(TTS,"TTS","支付宝收款303000元",3,function() sys.publish("PLAY_END") end)
  134. sys.waitUntil("PLAY_END")
  135. audio.play(TTS,"TTS","支付宝收款6003000元",3,function() sys.publish("PLAY_END") end)
  136. sys.waitUntil("PLAY_END")
  137. end
  138. end)
  139. ]]
  140. --audio.setTTSSpeed(5)
  141. --pcall(audiocore.pa,13,2)
  142. --audiocore.setpa(audiocore.CLASS_D)
  143. --audio.setChannel(1)
  144. --[[
  145. sys.taskInit(function()
  146. while true do
  147. sys.wait(2000)
  148. --播放多mp3文件方式
  149. local multiFile = {"/lua/0.mp3","/lua/1.mp3","/lua/2.mp3","/lua/3.mp3","/lua/4.mp3"}
  150. audio.play(1,"FILE",multiFile,2,function() sys.publish("mp3MultiTest") end)
  151. sys.waitUntil("mp3MultiTest")
  152. end
  153. end)
  154. ]]