1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php文字转语音amr Android插件 TTS语音合成(文字转化语音)。

php文字转语音amr Android插件 TTS语音合成(文字转化语音)。

时间:2020-08-19 03:00:47

相关推荐

php文字转语音amr Android插件 TTS语音合成(文字转化语音)。

相关介绍

概念介绍

语音合成是实现人机语音交互,建立一个有听和讲能力的交互系统所必需的关键技术。随着语音技术的发展,百度自主研发了语音合成系统(TTS),功能是接受用户发送的文本,生成语音发送给用户。

对本文中将提到的概念约定如下:

语音合成:将文本合成为语音,即声音文件。

合成引擎:将文本合成为语音的核心模块。

TTS:Text To Speech,即“从文本到语音”。

BDTTSClient:语音合成 SDK 简称,详见下条。

语音合成 SDK:即本开发包,文中简称为 BDTTSClient。BDTTSClient 是一个封装了网络收发、音频播放功能的语音合成解决方案。借助 BDTTSClient 可以快速地在应用程序中集成语音合成功能。

百度语音

合成方式

1.离在线语音合成

2.在线语音合成(本文使用方式)

应用场景

我们团队的应用场景是在推送消息后,需要播放推送消息。

准备事项

1.下载Android 平台 HTML5+ SDK 。

2.注册百度开发者,创建应用,开通服务,请参考集成指南。

3.下载在线语音合成SDK_Android版。

实现步骤

1.先导入5+SDK就不多说了,参考Android平台第三方插件开发指导。

2.添加BDTTSClient到工程(将开发包中的 libs 目录整体拷贝到工程目录,libs 目录包括了各平台的 SO 库,开发者视应用需要可以进行删减。galaxy_lite.jar 是百度 Android 公共基础库。)

3.权限声明(需要在 AndroidManifest.xml 文件,增加以上三个权限)

4.集成java代码

import org.json.JSONArray;

import com.baidu.speechsynthesizer.SpeechSynthesizer;

import com.baidu.speechsynthesizer.SpeechSynthesizerListener;

import com.baidu.speechsynthesizer.publicutility.SpeechError;

import android.media.AudioManager;

import android.util.Log;

import mon.DHInterface.IWebview;

import mon.DHInterface.StandardFeature;

import mon.util.JSUtil;

public class baidutts extends StandardFeature implements SpeechSynthesizerListener{

private IWebview iwv ;

private String text;

private SpeechSynthesizer speechSynthesizer;

private static final String TAG = "zlz";

public void speak(IWebview pWebview, JSONArray array)

{

iwv = pWebview;

String CallBackID = array.optString(0);

JSONArray newArray = new JSONArray();

newArray.put(array.optString(1));

//前台传过来的文本信息

text = array.optString(1);

//Log.i(TAG, text);

initialTts();

JSUtil.execCallback(pWebview, CallBackID, newArray, JSUtil.OK, false);

}

//百度TTS初始化

private void initialTts() {

speechSynthesizer = new SpeechSynthesizer(iwv.getContext(),

"holder", this);

// 此处需要将setApiKey方法的两个参数替换为你在百度开发者中心注册应用所得到的apiKey和secretKey

speechSynthesizer.setApiKey("your-apiKey", "your-secretKey");

speechSynthesizer.setAudioStreamType(AudioManager.STREAM_MUSIC);

//setVolumeControlStream(AudioManager.STREAM_MUSIC);

new Thread(new Runnable() {

@Override

public void run() {

setParams();

int ret = speechSynthesizer.speak(text);

if (ret != 0) {

Log.i(TAG,"开始合成器失败" );

}

}

}).start();

}

private void setParams() {

speechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER, "0");

speechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOLUME, "5");

speechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEED, "5");

speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PITCH, "5");

speechSynthesizer.setParam(SpeechSynthesizer.PARAM_AUDIO_ENCODE, SpeechSynthesizer.AUDIO_ENCODE_AMR);

speechSynthesizer.setParam(SpeechSynthesizer.PARAM_AUDIO_RATE, SpeechSynthesizer.AUDIO_BITRATE_AMR_15K85);

}

@Override

public void onBufferProgressChanged(SpeechSynthesizer arg0, int arg1) {}

@Override

public void onCancel(SpeechSynthesizer arg0) {}

@Override

public void onError(SpeechSynthesizer arg0, SpeechError arg1) {}

@Override

public void onNewDataArrive(SpeechSynthesizer arg0, byte[] arg1, boolean arg2) {}

@Override

public void onSpeechFinish(SpeechSynthesizer arg0) {}

@Override

public void onSpeechPause(SpeechSynthesizer arg0) {}

@Override

public void onSpeechProgressChanged(SpeechSynthesizer arg0, int arg1) {}

@Override

public void onSpeechResume(SpeechSynthesizer arg0) {}

@Override

public void onSpeechStart(SpeechSynthesizer arg0) {}

@Override

public void onStartWorking(SpeechSynthesizer arg0) {}

@Override

public void onSynthesizeFinish(SpeechSynthesizer arg0) {}

}

5.前台javascript代码

document.addEventListener( "plusready", function()

{

var _BARCODE = 'kxdPlugins',

B = window.plus.bridge;

var kxdPlugins =

{

// 声明异步返回方法

speak : function (Argus, successCallback, errorCallback )

{

var success = typeof successCallback !== 'function' ? null : function(args)

{

successCallback(args);

},

fail = typeof errorCallback !== 'function' ? null : function(code)

{

errorCallback(code);

};

callbackID = B.callbackId(success, fail);

// 通知Native层plugintest扩展插件运行”speak”方法

return B.exec(_BARCODE, "speak", [callbackID, Argus]);

}

};

window.plus.kxdPlugins = kxdPlugins;

}, true );

使用方式

和普通的API调用方式一样:plus.kxdPlugins.speak("这是语音播放的文字内容");

注意事项

1.在/assets/data/properties.xml中添加插件权限。

2.在/assets/apps/appid/www/manifest.json 中添加对应插件权限。

3.在/AndroidManifest.xml 文件中添加对应的百度语音合成权限。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。