Android 语音合成(使用科大讯飞sdk)

最近需要使用到语音播报的功能,在百度七武器百度语音和科大讯飞的语音当中考虑到准确性和专业性,选择了科大讯飞。科大讯飞所提供的android开发sdk有两种一种是集成了自身产品语音+的sdk,功能比较强大但是会初始化语音服务模块;另一种是纯开发sdk不集成产品只需要导入相应jar包就可以使用。考虑到只用到了语音合成的技术所以选择了第二种sdk。

ps:要不是他sdk的官方文档写的太差了,也不会写这篇东西。

1,首先需要的jar包,一个是Msc.jar和libmsc.so文件(需要放到armeabi文件夹当中)。在官网中可以下载。

2,在AndroidManifest文件当中填写需要的权限。

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <uses-permission android:name="android.permission.RECORD_AUDIO" />  
  2. <uses-permission android:name="android.permission.INTERNET" />  
  3. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  4. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
  5. <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />  
  6. <uses-permission android:name="android.permission.READ_PHONE_STATE"/>  
3,在混淆打包的时候需要添加-keep class com.iflytek.**{*;},

4,在代码当中的使用:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.tts.demo;  
  2.   
  3. import com.iflytek.cloud.ErrorCode;  
  4. import com.iflytek.cloud.InitListener;  
  5. import com.iflytek.cloud.SpeechConstant;  
  6. import com.iflytek.cloud.SpeechError;  
  7. import com.iflytek.cloud.SpeechSynthesizer;  
  8. import com.iflytek.cloud.SpeechUtility;  
  9. import com.iflytek.cloud.SynthesizerListener;  
  10.   
  11. import android.os.Bundle;  
  12. import android.app.Activity;  
  13. import android.util.Log;  
  14. import android.view.Menu;  
  15. import android.view.View;  
  16. import android.view.View.OnClickListener;  
  17. import android.widget.Button;  
  18.   
  19. public class MainActivity extends Activity implements OnClickListener{  
  20.       
  21.     private SpeechSynthesizer mySynthesizer;  
  22.       
  23.     private Button tts_Button;  
  24.   
  25.     @Override  
  26.     protected void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.         setContentView(R.layout.activity_main);  
  29.           
  30.         tts_Button = (Button) findViewById(R.id.tts_button);  
  31.         tts_Button.setOnClickListener(this);  
  32.         /*  
  33.         在使用语音平台上传应用包的时候会自定生成一个appid   应该使用与包相对应的appid在申请提交后没有使用次数的限制  
  34.           
  35.         */  
  36.         //语音初始化,在使用应用使用时需要初始化一次就好,如果没有这句会出现10111初始化失败  
  37.         SpeechUtility.createUtility(MainActivity.this, "appid=51e8ae25");  
  38.         //处理语音合成关键类  
  39.         mySynthesizer = SpeechSynthesizer.createSynthesizer(this, myInitListener);  
  40.     }  
  41.   
  42.     private InitListener myInitListener = new InitListener() {  
  43.         @Override  
  44.         public void onInit(int code) {  
  45.             Log.d("mySynthesiezer:", "InitListener init() code = " + code);  
  46.         }  
  47.     };  
  48.   
  49.     @Override  
  50.     public void onClick(View v) {  
  51.         // TODO Auto-generated method stub  
  52.         switch (v.getId()){  
  53.         case R.id.tts_button:  
  54.             //设置发音人  
  55.             mySynthesizer.setParameter(SpeechConstant.VOICE_NAME,"xiaoyan");  
  56.             //设置音调  
  57.             mySynthesizer.setParameter(SpeechConstant.PITCH,"50");  
  58.             //设置音量  
  59.             mySynthesizer.setParameter(SpeechConstant.VOLUME,"50");  
  60.             int code = mySynthesizer.startSpeaking("欢迎使用语音导航!", mTtsListener);  
  61.             Log.d("mySynthesiezer start code:", code+"");  
  62.             break;  
  63.         default:  
  64.             break;  
  65.         }  
  66.     }  
  67.       
  68.       
  69.     private SynthesizerListener mTtsListener = new SynthesizerListener() {  
  70.         @Override  
  71.         public void onSpeakBegin() {  
  72.         }   
  73.         @Override  
  74.         public void onSpeakPaused() {  
  75.         }  
  76.         @Override  
  77.         public void onSpeakResumed() {  
  78.         }  
  79.         @Override  
  80.         public void onBufferProgress(int percent, int beginPos, int endPos,  
  81.                 String info) {  
  82.         }  
  83.         @Override  
  84.         public void onSpeakProgress(int percent, int beginPos, int endPos) {  
  85.         }  
  86.   
  87.         @Override  
  88.         public void onCompleted(SpeechError error) {  
  89.             if(error!=null)  
  90.             {  
  91.                 Log.d("mySynthesiezer complete code:", error.getErrorCode()+"");  
  92.             }  
  93.             else  
  94.             {  
  95.                 Log.d("mySynthesiezer complete code:", "0");  
  96.             }  
  97.         }  
  98.     };  
  99.   
  100. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值