当前位置:   article > 正文

讯飞语音唤醒技术_讯飞语音唤醒集成过程 java

讯飞语音唤醒集成过程 java

针对机器人 智能手表等的一项付费技术  官方提供35天三台装机量的试用,有兴趣的可以试着写写 

首先是官方注册  资源下载   权限设置等等就不一一设置了 上主要部分的代码

main.java文件代码

  1. package com.huanxing.lshuanxing;
  2. import org.json.JSONException;
  3. import org.json.JSONObject;
  4. import com.iflytek.cloud.RecognizerResult;
  5. import com.iflytek.cloud.SpeechConstant;
  6. import com.iflytek.cloud.SpeechError;
  7. import com.iflytek.cloud.SpeechEvent;
  8. import com.iflytek.cloud.SpeechSynthesizer;
  9. import com.iflytek.cloud.SpeechUtility;
  10. import com.iflytek.cloud.SynthesizerListener;
  11. import com.iflytek.cloud.VoiceWakeuper;
  12. import com.iflytek.cloud.WakeuperListener;
  13. import com.iflytek.cloud.WakeuperResult;
  14. import com.iflytek.cloud.util.ResourceUtil;
  15. import com.iflytek.cloud.util.ResourceUtil.RESOURCE_TYPE;
  16. import android.os.Bundle;
  17. import android.os.IBinder;
  18. import android.os.RemoteException;
  19. import android.app.Activity;
  20. import android.view.Menu;
  21. import android.widget.Toast;
  22. public class MainActivity extends Activity {
  23. private int curThresh = 40;
  24. private VoiceWakeuper mivWa;
  25. private SpeechSynthesizer mTts;
  26. //定义的一个唤醒响应的数组
  27. String[] ssreply={
  28. "干啥!","咋了!","在呢!","你说话呀!"
  29. };
  30. //private KqwWake kqwWake;
  31. @Override
  32. protected void onCreate(Bundle savedInstanceState) {
  33. super.onCreate(savedInstanceState);
  34. //初始化及创建语音配置对象
  35. SpeechUtility.createUtility(MainActivity.this,SpeechConstant.APPID+"=572be963");
  36. setContentView(R.layout.activity_main);
  37. initfirst();
  38. }
  39. private void initfirst(){
  40. mTts=SpeechSynthesizer.createSynthesizer(MainActivity.this, null);
  41. //语音唤醒代码集成
  42. mivWa=VoiceWakeuper.createWakeuper(MainActivity.this, null);
  43. //获取唤醒词路径
  44. String respath=ResourceUtil.generateResourcePath(MainActivity.this, RESOURCE_TYPE.assets, "ivw/572be963.jet");
  45. mivWa.setParameter(SpeechConstant.IVW_RES_PATH, respath);
  46. mivWa.setParameter(SpeechConstant.IVW_THRESHOLD, "0:"+curThresh);
  47. // 设置唤醒模式
  48. mivWa.setParameter(SpeechConstant.IVW_SST, "wakeup");
  49. // 设置持续进行唤醒
  50. mivWa.setParameter(SpeechConstant.KEEP_ALIVE, "1");
  51. mivWa.startListening(mWakeuperListener);
  52. mivWa.setParameter(SpeechConstant.IVW_SST, "oneshot");
  53. mivWa.setParameter(SpeechConstant.ENGINE_TYPE, "cloud");
  54. mivWa.setParameter(SpeechConstant.IVW_NET_MODE, "2");
  55. mivWa.startListening(mWakeuperListener);
  56. }
  57. private WakeuperListener mWakeuperListener=new WakeuperListener() {
  58. public void onVolumeChanged(int arg0) {
  59. // TODO Auto-generated method stub
  60. }
  61. public void onResult(WakeuperResult arg0) {
  62. // TODO Auto-generated method stub
  63. String text = arg0.getResultString();
  64. JSONObject object = null;
  65. try {
  66. object = new JSONObject(text);
  67. } catch (JSONException e) {
  68. // TODO Auto-generated catch block
  69. e.printStackTrace();
  70. }
  71. StringBuffer buffer = new StringBuffer();
  72. buffer.append("【RAW】 " + text);
  73. buffer.append("\n");
  74. buffer.append("【操作类型】" + object.optString("sst"));
  75. buffer.append("\n");
  76. buffer.append("【唤醒词id】" + object.optString("id"));
  77. buffer.append("\n");
  78. buffer.append("【得分】" + object.optString("score"));
  79. buffer.append("\n");
  80. buffer.append("【前端点】" + object.optString("bos"));
  81. buffer.append("\n");
  82. buffer.append("【尾端点】" + object.optString("eos"));
  83. String esultString = buffer.toString();
  84. Toast.makeText(MainActivity.this,"唤醒成功",1).show();
  85. int a=(int)(Math.random() * 3+0);
  86. String ssString=ssreply[a];
  87. hecheng(ssString);
  88. stopWake();
  89. mivWa.startListening(mWakeuperListener);
  90. }
  91. public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
  92. // TODO Auto-generated method stub
  93. if (SpeechEvent.EVENT_IVW_RESULT==arg0) {
  94. RecognizerResult result=(RecognizerResult) arg3.get(SpeechEvent.KEY_EVENT_IVW_RESULT);
  95. }
  96. }
  97. public void onError(SpeechError arg0) {
  98. // TODO Auto-generated method stub
  99. }
  100. public void onBeginOfSpeech() {
  101. // TODO Auto-generated method stub
  102. }
  103. };
  104. @Override
  105. public boolean onCreateOptionsMenu(Menu menu) {
  106. // Inflate the menu; this adds items to the action bar if it is present.
  107. getMenuInflater().inflate(R.menu.main, menu);
  108. return true;
  109. }
  110. public void stopWake() {
  111. mivWa = VoiceWakeuper.getWakeuper();
  112. if (mivWa != null) {
  113. mivWa.stopListening();
  114. } else {
  115. Toast.makeText(MainActivity.this, "唤醒未初始化", Toast.LENGTH_SHORT).show();
  116. }
  117. }
  118. private void setParam(){
  119. // 设置发音人
  120. mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
  121. // 设置语速
  122. mTts.setParameter(SpeechConstant.SPEED, "50");
  123. // 设置音调
  124. mTts.setParameter(SpeechConstant.PITCH, "50");
  125. // 设置音量0-100
  126. mTts.setParameter(SpeechConstant.VOLUME, "100");
  127. // 设置播放器音频流类型
  128. mTts.setParameter(SpeechConstant.STREAM_TYPE, "3");
  129. }
  130. private SynthesizerListener mLListener=new SynthesizerListener() {
  131. public IBinder asBinder() {
  132. // TODO Auto-generated method stub
  133. return null;
  134. }
  135. public void onSpeakResumed() {
  136. // TODO Auto-generated method stub
  137. }
  138. public void onSpeakProgress(int arg0, int arg1, int arg2) {
  139. // TODO Auto-generated method stub
  140. }
  141. public void onSpeakPaused() {
  142. // TODO Auto-generated method stub
  143. }
  144. public void onSpeakBegin() {
  145. // TODO Auto-generated method stub
  146. }
  147. public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
  148. // TODO Auto-generated method stub
  149. }
  150. public void onCompleted(int arg0) throws RemoteException {
  151. // TODO Auto-generated method stub
  152. }
  153. public void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {
  154. // TODO Auto-generated method stub
  155. }
  156. public void onCompleted(SpeechError arg0) {
  157. // TODO Auto-generated method stub
  158. }
  159. };
  160. //语音合成的方法实现
  161. private void hecheng(String ss) {
  162. // TODO Auto-generated method stub
  163. setParam();
  164. //
  165. mTts.startSpeaking(ss,mLListener);
  166. }
  167. }

main.xml代码

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".MainActivity" >
  10. <TextView
  11. android:id="@+id/textView2"
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:text="@string/hello_world" />
  15. <TextView
  16. android:id="@+id/textView1"
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:layout_below="@+id/textView2"
  20. android:layout_marginTop="26dp"
  21. android:text="尝试输入以下唤醒词:" />
  22. <TextView
  23. android:id="@+id/textView3"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:layout_centerHorizontal="true"
  27. android:layout_marginTop="69dp"
  28. android:text="小明小明,叮叮当当,小牛吃草,校长哥哥,主席同志"
  29. android:textSize="25dp" />
  30. </RelativeLayout>
切记自己去注册定义唤醒词   还有appiD也换成自己的  如果有其他问题可以多多交流


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/830471
推荐阅读
相关标签
  

闽ICP备14008679号