cocos2dx实现android的对讯飞语音的合成(语言朗读的实现)
事实上非常easy,只是有些细节须要注意。
关于讯飞语音在android上的应用,大家须要自己去下载SDK,然后依照讯飞语音提供的api在自己的android的Demo上执行成功,那东西也相当的简单。
然后,大家也须要把自己的cocos2dx项目在android 上部署起来,这些网上资料非常多,也不一一解释,兴许我也会做出相应的总结。这里不多说。
OK,废话不多说,直接上代码
思路就是,通过cocos2dx的JNIhelper类实现C++对Java的调用,然后实现语音功能
废话不多说:
直接上代码:这里我在项目中直接把对语音的调用用了一个voice类
Voice.h
#ifndef _VOICE_H__
#define _VOICE_H__
#include "cocos2d.h"
USING_NS_CC; /**
* 加入声音
*/
void onVoice(const char * data); #endif
Voice.cpp
#include "Voice.h"
#include "cocos2d.h"
#include "IconvString.h"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "jni.h"
#include "platform/android/jni/JniHelper.h"
#endif
USING_NS_CC;
void onVoice(const char *data){
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo jmi;
//java的类名
const char * jniClass = "org/cocos2dx/cpp/AppActivity";
//获取java部分的方法,具体參数请參考JniMethodInfo类的源代码,參数分别为,类对象,java类,java类的方法,方法的參数和返回值,V表示void类型返回值(即无返回值,括号中面的表示參数,參数是一个字符串【详见JNI签名规范】)
bool isHave = JniHelper::getStaticMethodInfo(jmi,jniClass,"onVoiceStart","(Ljava/lang/String;)V");
if (isHave){
//转换字符串以及格式
jstring jdata = jmi.env->NewStringUTF(GBKToUTF8(data));
//调用java的方法,前面2个參数是固定的,后面的參数是在java的方法中的參数
jmi.env->CallStaticVoidMethod(jmi.classID, jmi.methodID, jdata);
}
#endif
}
Java 端的代码例如以下(附带百度广告的实现代码)
package org.cocos2dx.cpp;
import org.cocos2dx.lib.Cocos2dxActivity;
import android.app.ActionBar.LayoutParams;
import android.os.Bundle;
import android.util.Log;
import android.widget.RelativeLayout; import com.baidu.mobads.AdView;
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; public class AppActivity extends Cocos2dxActivity {
// 语音+安装助手类
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SpeechUtility.createUtility(AppActivity.this, "appid=53bb48d3");
showAds();
}
/**
* C++ 调用方法,实现语音播报
* @param value 要播报的内容
* @param person 声音的角色,建议用小女孩 vinn
* @param voiceSpeed 声音的语速,建议45
* @param voicePitch 音调 ,建议 55
* @param voiceVolume 音量 建议 100
*/
//String value,String person,String voiceSpeed,String voicePitch,String voiceVolume
public static void onVoiceStart(final String value)throws Exception{ SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(AppActivity.getContext(), null); mTts.setParameter(SpeechConstant.VOICE_NAME,"vinn");
//设置语速
mTts.setParameter(SpeechConstant.SPEED,"45"); //设置音调
mTts.setParameter(SpeechConstant.PITCH,"55"); //设置音量
mTts.setParameter(SpeechConstant.VOLUME,"100"); //设置播放器音频流类型
mTts.setParameter(SpeechConstant.STREAM_TYPE, "2"); mTts.startSpeaking(value, mTtsListener); }
private static 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) { }
};
//显示广告
private void showAds(){
//相对定位布局
RelativeLayout layout = new RelativeLayout(this);
//给广告区域的宽高属性定义
addContentView(layout,new LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.MATCH_PARENT));
//把广告层加入到当前界面上
AdView adView = new AdView(this);
//大小
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
//位置
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
//加入进项目中进行显示
layout.addView(adView,layoutParams );
}
}
调用语言的代码:
onVoice(“你是我的小苹果”);
在外部使用别忘了引入头文件哦
#include "Voice/Voice.h"
这样就能够实现了,百度广告部分,大家有兴趣去研究下,也是须要sdk的哦
cocos2dx实现android的对讯飞语音的合成(语言朗读的实现)的更多相关文章
- 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino
大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...
- Android讯飞语音云语音听写学习
讯飞语音云语音听写学习 这几天两个舍友都买了iPhone 6S,玩起了"Hey, Siri",我依旧对我的Nexus 5喊着"OK,Google" ...
- android讯飞语音开发常遇到的问题
场景:android项目中共使用了3个语音组件:在线语音听写.离线语音合成.离线语音识别 11208:遇到这个错误,授权应用失败,先检查装机量(3台测试权限),以及appid的申请时间(35天期限), ...
- Android自带语音播报+讯飞语音播报封装(直接用)
一.Android自带的语音播报 1.查看是否支持中文,在测试的设备中打开‘设置’ -->找到 '语言和输入法'-->查看语音选项,是否支持中文,默认仅支持英文. 使用如下: public ...
- Android 讯飞语音听写SDK快速接入(附空指针解决和修改对话框文字方法)
1.账号准备工作 首先要有一个讯飞的账号啦,为后面申请APPID.APPKey等东西做准备.顺带一提:讯飞对不同认证类型用户开 放的SDK的使用次数是有不同的,详情如下图. 账号申请完成后,需要去你自 ...
- 基于讯飞语音API应用开发之——离线词典构建
最近实习在做一个跟语音相关的项目,就在度娘上搜索了很多关于语音的API,顺藤摸瓜找到了科大讯飞,虽然度娘自家也有语音识别.语义理解这块,但感觉应该不是很好用,毕竟之前用过百度地图的API,有问题也找不 ...
- UNITY 接讯飞语音过程总结
11:13 2017/3/141,安装问题:JDK与ECLIPSE位数一定要对应,32位对64位会出现 java was returned ....code 13的弹框错误.版本号可以不一致.2,EC ...
- 讯飞语音唤醒SDK集成流程
唤醒功能,顾名思义,通过语音,唤醒服务,做我们想做的事情. 效果图(开启应用后说讯飞语音或者讯飞语点唤醒) 源码下载 地址:http://download.csdn.net/detail/q48788 ...
- iOS: 讯飞语音的使用
一.介绍: 讯飞语音做的相当不错,容错率达到90%多,如果需要做语音方面的功能,它绝对是一个不错的选择.讯飞语音的功能很多:语音听写.语音识别.语音合成等,但我们最常用的还是语音听写.讯飞语音中包含界 ...
随机推荐
- Android中用Application类实现全局变量
最近在项目中,遇到了application这个类,开始不知道有什么用,经过学习后才知道它的用途也蛮大的,举个例子,如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型:而在 ...
- 练习2 H题 - 求数列的和
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 数列的 ...
- The Greate Wall 相关网络知识(一)域名劫持
什么叫做DNS? DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串 ...
- 最近Get到的一些HTML/CSS中的小点(一)
1.<em>和<strong>标签都是用来强调一段话中的某几个文字.<em>默认斜体,<strong>默认粗体.在强调语气上<strong> ...
- PANGU---Planet and Asteroid Natural scene Generation Utility
PANGU是由英国dundee邓迪大学开发的一款行星.小行星自然环境仿真软件 https://www.star-dundee.com/products/pangu-planet-and-asteroi ...
- NEURAL NETWORKS, PART 3: THE NETWORK
NEURAL NETWORKS, PART 3: THE NETWORK We have learned about individual neurons in the previous sectio ...
- codeforces C. Painting Fence
http://codeforces.com/contest/448/problem/C 题意:给你n宽度为1,高度为ai的木板,然后用刷子刷颜色,可以横着刷.刷着刷,问最少刷多少次可以全部刷上颜色. ...
- Supporting Multiple Screens 翻译 支持各种屏幕(上)
Supporting Multiple Screens 支持各种各样的屏幕尺寸.屏幕密度 Android runs on a variety of devices that offer differe ...
- Delphi 6 Web Services初步评估之三(转)
Delphi 6 Web Services初步评估之三(转) Delphi 6 Web Services初步评估之三(转)★ 测试总体印象:在整个测试中,对Delphi 6创建的Web Servi ...
- Unity FisheyeShader using Spherical Mapping
Shader "Hidden/FisheyeShader" { Properties { _MainTex ("Base (RGB)", 2D) = " ...