Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 語音合成(使用科大訊飛sdk)

Android 語音合成(使用科大訊飛sdk)

編輯:關於Android編程

最近需要使用到語音播報的功能,在百度七武器百度語音和科大訊飛的語音當中考慮到准確性和專業性,選擇了科大訊飛。科大訊飛所提供的android開發sdk有兩種一種是集成了自身產品語音+的sdk,功能比較強大但是會初始化語音服務模塊;另一種是純開發sdk不集成產品只需要導入相應jar包就可以使用。考慮到只用到了語音合成的技術所以選擇了第二種sdk。

ps:要不是他sdk的官方文檔寫的太差了,也不會寫這篇東西。

1,首先需要的jar包,一個是Msc.jar和libmsc.so文件(需要放到armeabi文件夾當中)。在官網中可以下載。

2,在AndroidManifest文件當中填寫需要的權限。






3,在混淆打包的時候需要添加-keep class com.iflytek.**{*;},

4,在代碼當中的使用:

package com.tts.demo;

import com.iflytek.cloud.ErrorCode;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener{
	
	private SpeechSynthesizer mySynthesizer;
	
	private Button tts_Button;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		tts_Button = (Button) findViewById(R.id.tts_button);
		tts_Button.setOnClickListener(this);
		/*
		在使用語音平台上傳應用包的時候會自定生成一個appid   應該使用與包相對應的appid在申請提交後沒有使用次數的限制
		
		*/
		//語音初始化,在使用應用使用時需要初始化一次就好,如果沒有這句會出現10111初始化失敗
		SpeechUtility.createUtility(MainActivity.this, "appid=51e8ae25");
		//處理語音合成關鍵類
		mySynthesizer = SpeechSynthesizer.createSynthesizer(this, myInitListener);
	}

	private InitListener myInitListener = new InitListener() {
		@Override
		public void onInit(int code) {
			Log.d("mySynthesiezer:", "InitListener init() code = " + code);
		}
	};

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()){
		case R.id.tts_button:
			//設置發音人
			mySynthesizer.setParameter(SpeechConstant.VOICE_NAME,"xiaoyan");
			//設置音調
			mySynthesizer.setParameter(SpeechConstant.PITCH,"50");
			//設置音量
			mySynthesizer.setParameter(SpeechConstant.VOLUME,"50");
			int code = mySynthesizer.startSpeaking("歡迎使用語音導航!", mTtsListener);
			Log.d("mySynthesiezer start code:", code+"");
			break;
		default:
			break;
		}
	}
	
	
	private SynthesizerListener mTtsListener = new SynthesizerListener() {
		@Override
		public void onSpeakBegin() {
		} 
		@Override
		public void onSpeakPaused() {
		}
		@Override
		public void onSpeakResumed() {
		}
		@Override
		public void onBufferProgress(int percent, int beginPos, int endPos,
				String info) {
		}
		@Override
		public void onSpeakProgress(int percent, int beginPos, int endPos) {
		}

		@Override
		public void onCompleted(SpeechError error) {
			if(error!=null)
			{
				Log.d("mySynthesiezer complete code:", error.getErrorCode()+"");
			}
			else
			{
				Log.d("mySynthesiezer complete code:", "0");
			}
		}
	};

}



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved