科大讯飞语音合成Demo讲讲(做做玩,超简)

android手机上TTS功能有时添加到手机应用中会给手机的应用用户体验很不错的提高。比如懒人听书,打车软件的语音播放。都很好的解放了用户的双手带来便捷的操作体感。今天就闲着没事随意做了一个小Demo。不过功能上简单,代码基本没有规范。有时间我会将他更改过来!

TTs我没有用android系统自带的因为很多国内的手机厂商直接就将TTS功能给剔出了。并且对中文语音的支持不太好。所以我采用了科大讯飞的API进行了语音开发。

1.首先你需要去科大讯飞的官网去下载开发文档和SDK同时他们会为你提供一个简单的DEMO。文档和SDK都到手了开发就容易好多了。网址:http://open.voicecloud.cn/index.php/manage/sdk

2.然后就是想其中导入夹包。科大讯飞的jar包有三种和多个平台的不同版本。我采用的是语音+的sdk。向android项目中导入jar的详细过程相信大家都已经熟悉了在此不再多说。对了要导入的jar是speachAPI.jar。

3.然后直接上代码:


布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="39dp"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText1"
        android:layout_marginLeft="105dp"
        android:layout_marginTop="96dp"
        android:text="Button" />

</RelativeLayout>

然后呢,我为了省省事我就写了个类吧TTs的这类东西给写到了一个Test类中:

package com.example.haha;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.RemoteException;

import com.iflytek.speech.ErrorCode;
import com.iflytek.speech.ISpeechModule;
import com.iflytek.speech.InitListener;
import com.iflytek.speech.SpeechConstant;
import com.iflytek.speech.SpeechSynthesizer;
import com.iflytek.speech.SpeechUtility;
import com.iflytek.speech.SynthesizerListener;


public class Test {
	private SpeechSynthesizer mTts;          //语音合成对象

	public Test(){}
	public Test(Context context){
		init(context);
	}
	public void init(Context context){
		//初始化语音对象
		mTts = new SpeechSynthesizer(context, mTtsInitListener);
		//参数初始化
		setParam();	
	}
	//播放函数
	public void play(String str){
		String text = str;
		setParam();
		// 设置参数
		int code = mTts.startSpeaking(text, mTtsListener);
		if (code != 0) {
			System.out.println("start speak error : " + code);
		} else
			System.out.println("start speak success.");
	}
	//关闭播放
	public void Cancel(){
		mTts.stopSpeaking(mTtsListener);
		System.out.println("关闭播放!!!");
	}
	//暂停
	public void pause(){
		mTts.pauseSpeaking(mTtsListener);
	}
	
	//继续
	public void resume(){
		mTts.resumeSpeaking(mTtsListener);
		System.out.println();
	}	    
	/**
	 * 参数设置
	 * @param param
	 * @return 
	 */
	private void setParam(){
		mTts.setParameter(SpeechConstant.ENGINE_TYPE, "local");
		
		
		mTts.setParameter(SpeechSynthesizer.VOICE_NAME,"xiaoyan");

		mTts.setParameter(SpeechSynthesizer.SPEED, "50");
		
		mTts.setParameter(SpeechSynthesizer.PITCH, "50");
		
		mTts.setParameter(SpeechSynthesizer.VOLUME, "50");
	}
	
	public void destroy(){
		 mTts.stopSpeaking(mTtsListener);
		 mTts.destory();
	}
	
	/**
     * 初期化监听。
     */
	InitListener mTtsInitListener = new InitListener() {
		@Override
		public void onInit(ISpeechModule arg0, int code) {
        	if (code == ErrorCode.SUCCESS) {
        		System.out.println("初始化成功!!!");
        	}
		}
    };
    /**
//     * 合成回调监听。
//     */
    SynthesizerListener mTtsListener = new SynthesizerListener.Stub() {
        @Override
        public void onBufferProgress(int progress) throws RemoteException {
        	
        	 System.out.println("onBufferProgress :" + progress);
        }

        @Override
        public void onCompleted(int code) throws RemoteException {
            System.out.println("onCompleted code =" + code);
        }

        @Override
        public void onSpeakBegin() throws RemoteException {
            System.out.println("onSpeakBegin");
        }

        @Override
        public void onSpeakPaused() throws RemoteException {
        	 System.out.println("onSpeakPaused.");
        }

        @Override
        public void onSpeakProgress(int progress) throws RemoteException {
        	System.out.println("onSpeakProgress :" + progress);
        }

        @Override
        public void onSpeakResumed() throws RemoteException {
        	System.out.println("onSpeakResumed");
        }
    };
	

}
好了具体就不在介绍了

还有一个Acitivity:

package com.example.haha;


import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
	
	private EditText edt;
	private Button but;
	private Test test;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.activity_main);
		edt = (EditText) findViewById(R.id.editText1);
		but = (Button) findViewById(R.id.button1);
		Context c = this.getApplicationContext();
		//SpeechUtility.getUtility(this).setAppid("4d6774d0");
		test = new Test(c);				
		but.setOnClickListener(new View.OnClickListener() {			
			@Override
			public void onClick(View arg0) {
				test.play(edt.getText().toString());
			}
		
		});
		
	}

    protected void onDestroy() {
        super.onDestroy();
        test.destroy();
    }


}

好了代码就这些了是不是很简单,接着来张图吧


这些真的没了。不过要想让应用发声不过还要一个插件,讯飞语音+插件。这部分代码官方的Demo上有我就没有写。回头加上吧。



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
科大讯飞语音识别demo(离线)是基于科大讯飞公司开发的一款语音识别技术的演示版本。通过这个demo,我们可以快速了解到科大讯飞语音识别的基本功能和特点。 首先,科大讯飞语音识别demo(离线)提供了离线语音识别的能力,即在没有网络连接的情况下也能进行语音识别。这在某些特殊环境中非常有用,如没有网络覆盖的地区或者需要保护隐私的场合。 其次,这个demo支持多语种的语音识别,可以识别包括中文、英文和其他一些主要语种在内的多种语言。这对于用户来说非常方便,无论是在国内还是国外,都能够得到准确的语音识别结果。 此外,科大讯飞语音识别demo(离线)还提供了一些自定义的功能,如识别结果的输出格式可以进行调整,可以根据用户的需求输出文字、拼音或者音素等不同形式的识别结果。同时,还可以设置一些参数,如语速、音量等,来调整识别的效果。 最后,科大讯飞语音识别demo(离线)还具备良好的稳定性和准确性。科大讯飞作为国内领先的语音识别技术提供商,其语音识别技术在行业内享有很高的声誉。在这个demo中,用户可以体验到科大讯飞的最新技术成果,享受到高质量的语音识别体验。 总结来说,科大讯飞语音识别demo(离线)是一款功能丰富、稳定准确的语音识别演示版本。通过这个demo,用户可以快速了解并体验科大讯飞语音识别技术的优势和特点,为进一步应用和开发提供了便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值