使用(科大讯飞)文字转语音播放
2017-05-04 21:55
288 查看
1、在科大讯飞上注册账号,创建项目,获取appid
2、添加对应的jar包 Msc.jar、Sunflower.jar
3、配置权限
4、在创建的MyApplication文件中配置:
5、创建MainActivity文件,在里面实现播放:
2、添加对应的jar包 Msc.jar、Sunflower.jar
3、配置权限
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
4、在创建的MyApplication文件中配置:
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=你的id");
5、创建MainActivity文件,在里面实现播放:
public class MainActivity extends AppCompatActivity implements OnClickListener { private static String TAG = MainActivity .class.getSimpleName(); // 语音合成对象 private SpeechSynthesizer mTts; String text; // 默认发音人 private String voicer = "xiaoyan"; private String[] mCloudVoicersEntries; private String[] mCloudVoicersValue ; // 缓冲进度 private int mPercentForBuffering = 0; // 播放进度 private int mPercentForPlaying = 0; private SharedPreferences mSharedPreferences; @SuppressLint("ShowToast") public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.ttsdemo); // 初始化合成对象 mTts = SpeechSynthesizer.createSynthesizer(TtsDemo.this, mTtsInitListener); mSharedPreferences = getSharedPreferences(MainActivity .PREFER_NAME, MODE_PRIVATE); mToast = Toast.makeText(this,"",Toast.LENGTH_SHORT); setParam();//配置信息 mTts.startSpeaking("播放的文字", mTtsListener); //开始播放 } /** * 初始化监听。 */ private InitListener mTtsInitListener = new InitListener() { @Override public void onInit(int code) { Log.d(TAG, "InitListener init() code = " + code); if (code != ErrorCode.SUCCESS) { showTip("初始化失败,错误码:"+code); } else { // 初始化成功,之后可以调用startSpeaking方法 // 注:有的开发者在onCreate方法中创建完合成对象之后马上就调用startSpeaking进行合成, // 正确的做法是将onCreate中的startSpeaking调用移至这里 } } }; /** * 合成回调监听。 */ private SynthesizerListener mTtsListener = new SynthesizerListener() { @Override public void onSpeakBegin() { showTip("开始播放"); } @Override public void onSpeakPaused() { showTip("暂停播放"); } @Override public void onSpeakResumed() { showTip("继续播放"); } @Override public void onBufferProgress(int percent, int beginPos, int endPos, String info) { // 合成进度 mPercentForBuffering = percent; showTip(String.format(getString(R.string.tts_toast_format), mPercentForBuffering, mPercentForPlaying)); } @Override public void onSpeakProgress(int percent, int beginPos, int endPos) { // 播放进度 mPercentForPlaying = percent; showTip(String.format(getString(R.string.tts_toast_format), mPercentForBuffering, mPercentForPlaying)); } @Override public void onCompleted(SpeechError error) { if (error == null) { mTts.startSpeaking(text, mTtsListener); showTip("播放完成"); } else if (error != null) { showTip(error.getPlainDescription(true)); } } @Override public void onEvent(int eventType, int arg1, int arg2, Bundle obj) { // 以下代码用于获取与云端的会话id,当业务出错时将会话id提供给技术支持人员,可用于查询会话日志,定位出错原因 // 若使用本地能力,会话id为null // if (SpeechEvent.EVENT_SESSION_ID == eventType) { // String sid = obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID); // Log.d(TAG, "session id =" + sid); // } } }; private void showTip(final String str) { mToast.setText(str); mToast.show(); } private void setParam(){ // 清空参数 mTts.setParameter(SpeechConstant.PARAMS, null); // 根据合成引擎设置相应参数 if(mEngineType.equals(SpeechConstant.TYPE_CLOUD)) { mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); // 设置在线合成发音人 mTts.setParameter(SpeechConstant.VOICE_NAME, voicer); //设置合成语速 mTts.setParameter(SpeechConstant.SPEED, mSharedPreferences.getString("speed_preference", "50")); //设置合成音调 mTts.setParameter(SpeechConstant.PITCH, mSharedPreferences.getString("pitch_preference", "50")); //设置合成音量 mTts.setParameter(SpeechConstant.VOLUME, mSharedPreferences.getString("volume_preference", "50")); }else { mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL); // 设置本地合成发音人 voicer为空,默认通过语记界面指定发音人。 mTts.setParameter(SpeechConstant.VOICE_NAME, ""); /** * TODO 本地合成不设置语速、音调、音量,默认使用语记设置 * 开发者如需自定义参数,请参考在线合成参数设置 */ } //设置播放器音频流类型 mTts.setParameter(SpeechConstant.STREAM_TYPE, mSharedPreferences.getString("stream_preference", "3")); // 设置播放合成音频打断音乐播放,默认为true mTts.setParameter(SpeechConstant.KEY_REQUEST_FOCUS, "true"); // 设置音频保存路径,保存音频格式支持pcm、wav,设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限 // 注:AUDIO_FORMAT参数语记需要更新版本才能生效 mTts.setParameter(SpeechConstant.AUDIO_FORMAT, "wav"); mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, Environment.getExternalStorageDirectory()+"/msc/tts.wav"); } @Override protected void onDestroy() { super.onDestroy(); mTts.stopSpeaking(); // 退出时释放连接 mTts.destroy(); } }
相关文章推荐
- 使用科大讯飞语音SDK实现文字在线合成语音
- 使用jacob+SAPI5.1实现将将文字转换为语音播放并可存储到.wav文件
- iOS 使用科大讯飞技术实现语音转文字(语音听写)
- Android TTS 中文 文字转语音 使用TextToSpeech Svox
- QT中使用phonon播放语音文件
- 科大讯飞文字转语音功能
- html5 audio 语音播放在手机端使用注意(iphone,ipd,safari)
- 使用科大讯飞的语音技术实现语音识别
- Android 科大讯飞语音交互API简单使用
- 使用科大讯飞的语音技术实现语音识别
- 科大讯飞语音云使用经历
- 使用科大讯飞SDK实现语音功能
- QT中使用mplayer播放语音文件
- Animation-list帧动画使用【微信语音播放动画】
- MFC中 使用多线程实现语音播放功能
- Animation-list帧动画使用【微信语音播放动画】
- Android TTS 中文 文字转语音 使用TextToSpeech Svox
- android语音识别之科大讯飞语音API的使用
- android语音识别之科大讯飞语音API的使用
- <交流贴>android语音识别之科大讯飞语音API的使用