科大讯飞(语音合成和语音听写)


由于google的自带的TTS不支持中文转语音。所以很无奈的只能选择语音龙头中的科大讯飞了

 

本文章只是简单的实现语音合成和语音听写

 

 

package com.example.viocedemo;

import com.iflytek.cloud.speech.RecognizerResult;
import com.iflytek.cloud.speech.SpeechConstant;
import com.iflytek.cloud.speech.SpeechError;
import com.iflytek.cloud.speech.SpeechListener;
import com.iflytek.cloud.speech.SpeechSynthesizer;
import com.iflytek.cloud.speech.SpeechUser;
import com.iflytek.cloud.speech.SynthesizerListener;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;

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

public class MainActivity extends Activity implements OnClickListener,SynthesizerListener{
	private EditText editText;
	private Button button1;
	private Button button2;
	//合成对象
	private SpeechSynthesizer speechSynthesizer;
	//识别窗口
	private RecognizerDialog recognizerDialog;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		SpeechUser.getUser().login(MainActivity.this, null, null, "appid=5317e26a", listener);
		init();
		setParam();
		
	}
	
	public void init()
	{
		editText = (EditText) findViewById(R.id.editText1);
		button1 = (Button) findViewById(R.id.button1);
		button2 = (Button) findViewById(R.id.button2);
		button1.setOnClickListener(this);
		button2.setOnClickListener(this);
	}
	
	public void setParam()
	{
		speechSynthesizer = SpeechSynthesizer.createSynthesizer(this);
		speechSynthesizer.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
		speechSynthesizer.setParameter(SpeechConstant.SPEED, "50");
		speechSynthesizer.setParameter(SpeechConstant.VOLUME, "50");
		speechSynthesizer.setParameter(SpeechConstant.PITCH, "50");
	}
	
	public void setDialog()
	{
		recognizerDialog = new RecognizerDialog(this);
		recognizerDialog.setParameter(SpeechConstant.DOMAIN, "iat");
		recognizerDialog.setParameter(SpeechConstant.SAMPLE_RATE, "16000");
		editText.setText(null);
		//显示Dialog
		recognizerDialog.setListener(dialogListener);
		recognizerDialog.show();
	}
	
	/**
	 * 识别回调监听器
	 */
	private RecognizerDialogListener dialogListener = new RecognizerDialogListener() {
		//识别结果回调
		@Override
		public void onResult(RecognizerResult arg0, boolean arg1) {
			// TODO Auto-generated method stub
			String text = JsonParser.parseIatResult(arg0.getResultString());
			editText.append(text);
			editText.setSelection(editText.length());
		}
		
		//识别结束回调
		@Override
		public void onError(SpeechError arg0) {
			// TODO Auto-generated method stub
			
		}
	};

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.button1:
			String text = editText.getText().toString();
			speechSynthesizer.startSpeaking(text, this);
			break;
		case R.id.button2:
			setDialog();
			break;
		default:
			break;
		}
	}
	
	//缓冲进度回调通知
	@Override
	public void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {
		// TODO Auto-generated method stub
		
	}
	
	//结束回调
	@Override
	public void onCompleted(SpeechError arg0) {
		// TODO Auto-generated method stub
		
	}
	//开始播放
	@Override
	public void onSpeakBegin() {
		// TODO Auto-generated method stub
		
	}
	//暂停播放
	@Override
	public void onSpeakPaused() {
		// TODO Auto-generated method stub
		
	}
	//播放进度
	@Override
	public void onSpeakProgress(int arg0, int arg1, int arg2) {
		// TODO Auto-generated method stub
		
	}
	//继续播放
	@Override
	public void onSpeakResumed() {
		// TODO Auto-generated method stub
		
	}
	
	/**
	 * 通用回调接口
	 */
	private SpeechListener listener = new SpeechListener() {
		
		//消息回调
		@Override
		public void onEvent(int arg0, Bundle arg1) {
			// TODO Auto-generated method stub
			
		}
		
		//数据回调
		@Override
		public void onData(byte[] arg0) {
			// TODO Auto-generated method stub
			
		}
		
		//结束回调(没有错误)
		@Override
		public void onCompleted(SpeechError arg0) {
			// TODO Auto-generated method stub
			
		}
	};

}

 

 代码下载:http://download.csdn.net/detail/liu8021203/7030615

 

很抱歉,根据您提供的引用内容,我无法直接回答您的问题。因为您提供的是Java Springboot和JAVAWEB项目的相关内容,而uniapp是一种跨平台的移动应用开发框架,两者并不直接相关。但是,我可以为您提供一些关于uniapp中使用科大讯飞语音流式听写语音合成语音唤起的信息。 uniapp是一种跨平台的移动应用开发框架,可以使用Vue.js语法进行开发。如果您想在uniapp中使用科大讯飞语音流式听写语音合成语音唤起功能,可以使用uni-app插件marketplace中提供的科大讯飞插件。该插件提供了语音听写语音合成语音唤起等功能的API接口,可以方便地在uniapp中使用。 以下是使用科大讯飞插件实现语音听写语音合成语音唤起的示例代码: 1.语音听写 ```javascript // 引入科大讯飞插件 import uniIat from '@/uni_modules/uni-iat/js_sdk/uni-iat.js' // 开始语音听写 uniIat.recognition({ engine: 'sms', // 引擎类型,sms为流式听写 lang: 'zh_cn', // 语言类型,中文简体 resType: 0, // 结果返回类型,0为json timeout: 30000, // 超时时间,单位为毫秒 onResult: function (result) { console.log(result) }, onError: function (error) { console.log(error) } }) ``` 2.语音合成 ```javascript // 引入科大讯飞插件 import uniTts from '@/uni_modules/uni-tts/js_sdk/uni-tts.js' // 开始语音合成 uniTts.speak({ text: '科大讯飞语音合成', // 合成的文本 speed: 50, // 合成语速,取值范围0-100,默认为50 volume: 50, // 合成音量,取值范围0-100,默认为50 pitch: 50, // 合成语调,取值范围0-100,默认为50 voiceType: 'xiaoyan', // 发音人类型,详见插件文档 onSpeakBegin: function () { console.log('开始播放') }, onSpeakPaused: function () { console.log('播放暂停') }, onSpeakResumed: function () { console.log('播放恢复') }, onCompleted: function () { console.log('播放完成') }, onError: function (error) { console.log(error) } }) ``` 3.语音唤起 ```javascript // 引入科大讯飞插件 import uniIvw from '@/uni_modules/uni-ivw/js_sdk/uni-ivw.js' // 开始语音唤起 uniIvw.start({ engineType: 'ivw', // 引擎类型,ivw为唤醒引擎 threshold: '0:1e-30', // 唤醒门限,详见插件文档 onResult: function (result) { console.log(result) }, onError: function (error) { console.log(error) } }) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值