speech_custom.html 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  6. <meta name="HandheldFriendly" content="true"/>
  7. <meta name="MobileOptimized" content="320"/>
  8. <title>自定义语音识别</title>
  9. <script type="text/javascript">
  10. var text='';
  11. document.addEventListener('plusready', function(){
  12. initDom();
  13. // 监听语音识别事件
  14. plus.speech.addEventListener('start', function(){
  15. console.log('Event: start');
  16. text=null;
  17. result.value='识别中';
  18. partial.innerText='';
  19. }, false);
  20. plus.speech.addEventListener('volumeChange', function(e){
  21. volume.style.width = 100*e.volume+'px';
  22. }, false);
  23. plus.speech.addEventListener('recognizing', function(e){
  24. console.log('Event: recognizing');
  25. partial.innerText = e.partialResult;
  26. }, false);
  27. plus.speech.addEventListener('recognition', function(e){
  28. console.log('Event: recognition');
  29. text?(text+='\n'):text='';
  30. text+=e.result;
  31. result.value=text;
  32. partial.innerText = e.result;
  33. }, false);
  34. plus.speech.addEventListener('end', function(){
  35. console.log('Event: end');
  36. if(!text||text==''){
  37. plus.nativeUI.toast('没有识别到内容');
  38. }
  39. result.value=text;
  40. }, false);
  41. }, false);
  42. var result=null,recogniz=null,partial=null,volume=null;
  43. function initDom(){
  44. result = document.getElementById('result');
  45. recogniz = document.getElementById('recogniz');
  46. partial = document.getElementById('partial');
  47. volume = document.getElementById('volume');
  48. done = document.getElementById('done');
  49. done.addEventListener('touchstart', doStart, false);
  50. done.addEventListener('touchend', doEnd, false);
  51. }
  52. function doStart(){
  53. plus.speech.startRecognize({
  54. engine: 'baidu',
  55. lang: 'zh-cn',
  56. 'userInterface': false,
  57. 'continue': true
  58. });
  59. recogniz.style.visibility = 'visible';
  60. }
  61. function doEnd(){
  62. plus.speech.stopRecognize();
  63. recogniz.style.visibility = 'hidden';
  64. }
  65. function startRecognizeSilent(){
  66. var options={
  67. userInterface: false
  68. };
  69. plus.speech.startRecognize(options, function(s){
  70. console.log('success: '+s);
  71. }, function(e){
  72. console.log('error: '+JSON.stringify(e));
  73. });
  74. }
  75. </script>
  76. <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8"/>
  77. <style type="text/css">
  78. .text {
  79. width: 80%;
  80. height: 50px;
  81. border: #00CCCC 1px solid;
  82. color: #CCCCCC;
  83. }
  84. .recogniz {
  85. width: 200px;
  86. height: 100px;
  87. padding: 12px;
  88. margin: auto;
  89. background-color: rgba(0,0,0,0.5);
  90. border-radius: 16px;
  91. visibility: hidden;
  92. }
  93. .partial {
  94. width: 100%;
  95. height: 40px;
  96. margin-top: 16px;
  97. font-size: 12px;
  98. color: #FFFFFF;
  99. }
  100. .volume {
  101. width: 10px;
  102. height: 6px;
  103. border-style:solid;
  104. display:inline-block;
  105. box-sizing:border-box;
  106. border-width:1px;
  107. border-color:#CCCCCC;
  108. border-radius: 50%;
  109. background-color: #00CC00;
  110. }
  111. </style>
  112. </head>
  113. <body>
  114. <br/>
  115. <p class="des">
  116. 设置userInterface属性值为false则不使用默认语音识别界面,此时可通过H5自定义语音识别界面。
  117. </p>
  118. <div style="color:#FF0000;font-weight:bold;text-align:center;">注意:仅百度语音识别支持自定义界面</div>
  119. <br/>
  120. <div style="width:100%;text-align:center;">
  121. <textarea id="result" class="text" placeholder="语音识别内容"></textarea>
  122. </div>
  123. <br/>
  124. <div style="width:100%;height:100px;text-align:center;">
  125. <div id="recogniz" class="recogniz">
  126. <div style="color: #0000CC;">...倾听中...</div>
  127. <div id="partial" class="partial">...</div>
  128. <div id="volume" class="volume"></div>
  129. </div>
  130. </div>
  131. <br/>
  132. <div style="position:absolute;bottom:50px;width:100%;">
  133. <div id="done" class="button" readonly>按下开始&amp;松开结束</div>
  134. </div>
  135. </body>
  136. </html>