one-long

标题: 微信语音合成接口开发指南(android版) [打印本页]

作者: admin    时间: 2016-8-10 10:45
标题: 微信语音合成接口开发指南(android版)
微信语音合成接口开发指南(android版)

微信语音合成接口具有语音合成功能,能够将移动应用中的文字用标准的声音朗读出来,丰富了应用的使用场景,提高可用性。
使用说明
本文档主要介绍微信语音合成接口(Android 版)使用方法,利用 SDK 可以直接完成从录音到网络传输、云端语音识别、结果获取、语音合成等一系列动作。
本文属于入门级文档,旨在帮助开发者快速学习 Android SDK 的使用并应用到自身开发工作。具体 API 可到附件下载《微信语音SDK(Android版)开发手册》进行查询。
准备工作第一步 创建移动应用
请到“管理中心”中点击“创建移动应用”,填写相关资料,然后将该应用提交审核,只有审核通过的应用才能进行开发。
申请资料中需要提交应用签名值,可前往附件下载签名生成工具。
注册完毕,我们会在 7 个工作日内完成审核工作。 审核通过之后,开放平台将分配给该移动应用全局唯一的AppID
第二步 下载 Android SDK
附件下载 Android SDK,压缩包中包括 Demo+SDK+开发文档。其中的 Demo 使用 SDK 的各功能 API;SDK 包括.so 和.jar 文件。
Demo介绍
为了更好的理解微信语音 SDK 的使用,下面将通过一个简单的实例来讲解一下 SDK 各个关键 API 接口的使用。
1. 开发工具
Android 开发工具有很多,开发者可以根据自身的喜好来选择。在讲解本示例的时候,我们将使用 Eclipse 来一步步分析。
2. 工程配置
首先新建一个示例工程,按以下步骤进行配置。
i. 引入.so 文件:如下图,在 libs\armeabi 目录下粘贴 libWXVoice.so 文件。
ii. 引入 jar 包:
在工程属性->Java Build Path->Libraries 中选择“Add External JARs”,选定 wxvoice.jar,确定后返回,完成后的效果如图1所示。
3. AndroidManifest.xml 设置i. 添加必要的权限支持:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   

4. 语音合成 Demoi. 初始化
SpeechSynthesizer.shareInstance().setListener(this);
SpeechSynthesizer.shareInstance().setFormat(0);
SpeechSynthesizer.shareInstance().setVolume(1.0f);
mInitSucc = SpeechSynthesizer.shareInstance().init(this, screKey);
if (mInitSucc != 0) {

oast.makeText(this, "初始化失败",
Toast.LENGTH_SHORT).show();
}   

注:setFormat 函数用于设置请求的音频类型 0:mp3, 1:wav, 2:amr;setVolume 函数用于设置返回音频音量的大小, 范围在 0 – 2 之间的浮点数值。
ii. 开始合成
int ret =SpeechSynthesizer.shareInstance().start(mSynWords);
if (0 == ret) {
return;
}
else if (-402 == ret) {
Toast.makeText(this, "ErrorCode = " + ret +"; 文本不能为空", Toast.LENGTH_LONG).show();
}
else if (-403 == ret) {
Toast.makeText(this, "ErrorCode = " + ret +"; 字符数超过1024", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(this, "ErrorCode = " + ret, Toast.LENGTH_LONG).show();
}
   

iii. 取消合成SpeechSynthesizer.shareInstance().cancel()   
此接口的如果返回非0值, 则表示cancel过程结束, 否则其状态将通过public void onGetVoiceRecordState(TextSenderState state)回调获取。iv. 实现 TextSenderListener, 并重写其函数
直接在 Activity 类中实现 TextSenderListener,重写 TextSenderListener 各函数如下所示:
@Override
public void onGetResult(TextSenderResult arg0) {
SpeechSynthesizerResult result = (SpeechSynthesizerResult)arg0;
byte [] speech = result.speech;
}
@Override
public void onGetError(int errorCode) {
// TODO Auto-generated method stub
}
@Override
public void onGetVoiceRecordState(TextSenderState state) {
// TODO Auto-generated method stub
}
   

v. 释放系统资源
SpeechSynthesizer.shareInstance().destroy();   

注:调用此函数,需要确保识别过程或者cancel过程已经结束,否则会出现问题。
vi. Demo 截图





欢迎光临 one-long (https://bbs.one-long.com/) Powered by Discuz! X3.1