当前位置:   article > 正文

【Android语音合成TTS】云知声离线TTS使用详解_cn.yunzhisheng.tts.

cn.yunzhisheng.tts.

请尊重他人的劳动成果,转载请注明出处:【Android语音合成TTS】云知声离线TTS使用详解 

PS.


云知声是2012年创立的,虽然只有1年多的发展历程,但其语音识别技术核心团队已经从业十余年,积累颇丰,这也是为什么能够短短一年时间能够在语音识别领域内做得风生水起的缘故。微语音插件、搜狗语音助手、乐视超级电视、老罗锤子操作系统、触宝输入法,还有网易+电信推出的的易信,用的是云知声的语音识别。2013年,云知声在资本市场的认可度非常高,极受追捧。

目前云知声提供免费的离线TTS,但API比较少,功能也比较简单,合成的语音也比较生硬,如果对合成的语音要求不高的话可以考虑接入。

集成方法:


导入云知声TTS相关jar包和so文件

如图:

为了方便使用我这里将百度语音合成引擎做了进一步的封装,封装成了SpeechUtilOffline以方便调用: 

  1. package comjph.tts.usc;
  2. import android.content.Context;
  3. import android.media.AudioManager;
  4. import android.util.Log;
  5. import cn.yunzhisheng.tts.offline.TTSPlayerListener;
  6. import cn.yunzhisheng.tts.offline.basic.ITTSControl;
  7. import cn.yunzhisheng.tts.offline.basic.TTSFactory;
  8. /**
  9. * 离线语音解析
  10. *
  11. * @author JPH
  12. * @date 2015-4-14 下午7:20:25
  13. */
  14. public class SpeechUtilOffline implements TTSPlayerListener {
  15. public static final String appKey = "_appKey_";
  16. public static final String secret = "_secret_";
  17. private ITTSControl mTTSPlayer;
  18. private Context context;
  19. public SpeechUtilOffline(Context context) {
  20. this.context = context;
  21. init();
  22. }
  23. /**
  24. * 初始化引擎
  25. * @author JPH
  26. * @date 2015-4-14 下午7:32:58
  27. */
  28. private void init() {
  29. mTTSPlayer = TTSFactory.createTTSControl(context, appKey);// 初始化语音合成对象
  30. mTTSPlayer.setTTSListener(this);// 设置回调监听
  31. mTTSPlayer.setStreamType(AudioManager.STREAM_MUSIC);//设置音频流
  32. mTTSPlayer.setVoiceSpeed(2.5f);//设置播报语速,播报语速,数值范围 0.1~2.5 默认为 1.0
  33. mTTSPlayer.setVoicePitch(1.1f);//设置播报音高,调节音高,数值范围 0.9~1.1 默认为 1.0
  34. mTTSPlayer.init();// 初始化合成引擎
  35. }
  36. /**
  37. * 停止播放
  38. * @author JPH
  39. * @date 2015-4-14 下午7:50:35
  40. */
  41. public void stop(){
  42. mTTSPlayer.stop();
  43. }
  44. /**
  45. * 播放
  46. *
  47. * @author JPH
  48. * @date 2015-4-14 下午7:29:24
  49. */
  50. public void play(String content) {
  51. mTTSPlayer.play(content);
  52. }
  53. /**
  54. * 释放资源
  55. *
  56. * @author JPH
  57. * @date 2015-4-14 下午7:27:56
  58. */
  59. public void release() {
  60. // 主动释放离线引擎
  61. mTTSPlayer.release();
  62. }
  63. @Override
  64. public void onPlayEnd() {
  65. // 播放完成回调
  66. Log.i("msg", "onPlayEnd");
  67. }
  68. @Override
  69. public void onPlayBegin() {
  70. // 开始播放回调
  71. Log.i("msg", "onPlayBegin");
  72. }
  73. @Override
  74. public void onInitFinish() {
  75. // 初始化成功回调
  76. Log.i("msg", "onInitFinish");
  77. }
  78. @Override
  79. public void onError(cn.yunzhisheng.tts.offline.common.USCError arg0) {
  80. // 语音合成错误回调
  81. Log.i("msg", "onError");
  82. }
  83. @Override
  84. public void onCancel() {
  85. // 取消播放回调
  86. Log.i("msg", "onCancel");
  87. }
  88. @Override
  89. public void onBuffer() {
  90. // 开始缓冲回调
  91. Log.i("msg", "onBuffer");
  92. }
  93. }

使用方法: 

  1. package comjph.tts.usc;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.widget.EditText;
  7. public class TTSOfflineActivity extends Activity implements OnClickListener {
  8. private EditText mTTSText;
  9. private SpeechUtilOffline offline;
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.activity_offline_tts);
  14. mTTSText = (EditText) findViewById(R.id.textViewResult);
  15. offline=new SpeechUtilOffline(this);
  16. }
  17. @Override
  18. public void onClick(View v) {
  19. switch (v.getId()) {
  20. case R.id.btnPlay:
  21. offline.play(mTTSText.getText().toString());
  22. break;
  23. case R.id.btnStop:
  24. offline.stop();
  25. break;
  26. default:
  27. break;
  28. }
  29. }
  30. }
推荐阅读:
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/124113
推荐阅读
相关标签
  

闽ICP备14008679号