科⼤讯飞离线语⾳合成简单实例
如何使⽤科⼤讯飞开放平台的语⾳合成呢?
1.⾸先要注册开发者账户,创建我的新应⽤,创建完后就有⼀个专属APPID(⾮常重要),添加我的应⽤,下载你所需要的sdk,这⾥我们下
载离线语⾳合成。注意:下载的sdk⽂件,都是⾃⼰创建的应⽤⽣成的,申请appid时就与⾃⼰的应⽤绑定了的。所以⼀定要使⽤⾃⼰下载的
⽂件,appid的值也要使⽤⾃⼰的。
2.下载后将sdk解压,将libs下的两个jar包添加到libs⽬录下(jar包还要右键addtoLibraries),同路径下的其它.so⽂件(与c进⾏交互)复
制到main路径下新建的jniLibs(L要⼤写)⽬录下,将asrt⽬录拷贝到main⽬录下,将res⽬录下的tts⽂件复制到asrt⽬录下。并在你的
继承了Application的类中添加下图的⼏⾏代码进⾏配置(appid的值写⾃⼰注册的)。这些⽂件的安放位置在我的项⽬中体现如下:
3.在MainActivity同⽬录下创建类KqwSpeechSynthesizer,并创建类SoundTipUtil,再通过下图⽅框圈出的代码,即可实现在activity内
进⾏语⾳合成的使⽤了。不妨试试!
KqwSpeechSynthesizer类的代码如下:
t;
;
;
;
ode;
stener;
Constant;
Error;
Synthesizer;
sizerListener;
ceUtil;
/**
*语⾳合成器
*
*@authorkongqw
*/
publicclassKqwSpeechSynthesizer{
//Log标签
privatestaticfinalStringTAG="KqwSpeechSynthesizer";
privateContextmContext;
//语⾳合成对象
privateSpeechSynthesizermTts;
publicKqwSpeechSynthesizer(Contextcontext){
mContext=context;
//初始化合成对象
mTts=Synthesizer(context,newInitListener(){
@Override
publicvoidonInit(intcode){
Log.d(TAG,"InitListenerinit()code="+code);
if(code!=S){
xt(mContext,"初始化失败,错误码:"+code,_SHORT).show();
}
}
});
}
/**
*开始语⾳合成
*
*@paramtext
*/
publicvoidstart(Stringtext){
//设置参数
tParam();
intcode=peaking(text,mTtsListener);
if(code!=S){
xt(mContext,"语⾳合成失败,错误码:"+code,_SHORT).show();
}
}
/**
*合成回调监听。
*/
privateSynthesizerListenermTtsListener=newSynthesizerListener(){
@Override
publicvoidonSpeakBegin(){
Log.i(TAG,"开始合成");
}
@Override
publicvoidonSpeakPaud(){
Log.i(TAG,"暂停合成");
}
@Override
publicvoidonSpeakResumed(){
Log.i(TAG,"继续合成");
}
@Override
publicvoidonBufferProgress(intpercent,intbeginPos,intendPos,Stringinfo){
Log.i(TAG,"传冲进度:"+percent);
}
@Override
publicvoidonSpeakProgress(intpercent,intbeginPos,intendPos){
Log.i(TAG,"合成进度:"+percent);
}
@Override
publicvoidonCompleted(SpeechErrorerror){
if(error==null){
Log.i(TAG,"合成完成");
}elif(error!=null){
Log.i(TAG,"error:"+ng());
}
}
@Override
publicvoidonEvent(intarg0,intarg1,intarg2,Bundlearg3){
//TODOAuto-generatedmethodstub
}
};
/**
*参数设置
*
*@return
*@return
*/
privatevoidtParam(){
//清空参数
ameter(,null);
//设置使⽤本地引擎
ameter(_TYPE,_LOCAL);
//设置发⾳⼈资源路径
ameter(_RES_PATH,getResourcePath());
//设置发⾳⼈
ameter(_NAME,"xiaoyan");
//设置语速
ameter(,"50");
//设置⾳调
ameter(,"50");
//设置⾳量
ameter(,"50");
//设置播放器⾳频流类型
ameter(_TYPE,"3");
}
//获取发⾳⼈资源路径
privateStringgetResourcePath(){
StringBuffertempBuffer=newStringBuffer();
//合成通⽤资源
(teResourcePath(mContext,CE_,"tts/"));
(";");
//发⾳⼈资源
(teResourcePath(mContext,CE_,"tts/"));
ng();
}
}
SoundTipUtill类代码如下:
t;
publicclassSoundTipUtil{
privatestaticKqwSpeechSynthesizerkqwSpeechSynthesizer;
publicstaticvoidsoundTip(Contextcontext,Stringtext){
kqwSpeechSynthesizer=newKqwSpeechSynthesizer(context);
(text);
}
}
如果不是在activity内进⾏语⾳播报,那该咋办?
按以下步骤即可实现:1.在继承了Application的类中添加如下⼏⾏代码(图1);
2.在⾮Activity类中调⽤⽅法即可(如图2)
本文发布于:2023-03-10 16:19:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1678436341135186.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:讯飞语音.doc
本文 PDF 下载地址:讯飞语音.pdf
留言与评论(共有 0 条评论) |