讯飞语音合成 如何选择发音人

问题描述

讯飞语音合成有多个发音人,如何选择一个合适的发音人呢?我的解决方法是,选择符合要求的,然后每个都听一遍.最后选出一个合适的.

我的要求

我是用来朗读技术文章的,文章中要英文也有中文,所以我要选择支持中英文的发音人。发音人列表
这里有一张图片
符合我条件的发音人如下:

名称 属性 语言 参数名称 引擎参数 备注
小燕 青年女声 中英文(普通话) xiaoyan 默认
小宇 青年男声 中英文(普通话) xiaoyu
小研 青年女声 中英文(普通话) vixy
小琪 青年女声 中英文(普通话) vixq xiaoqi
小峰 青年男声 中英文(普通话) vixf

无法直接循环下载

下面写个demo,要求输入一段文字,然后使用上述的多个发音人分别来合成.下载下来我再一个个的听,选出一个英文清晰,阅读节奏合适的发音人.
因为要批量下载,我首先想到的是,循环调用下载方法不就行了如下所示:

for (......)
{
   
   
	// 3.创建一个SpeechSynthesizer对象
	SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer();
	// 4.设置合成参数
	......
	mTts.synthesizeToUri(Input, fileName, synthesizeToUriListener);
}

但是我失败了,这样并不会合成多个音频。只会合成一个。经过测试之后,我发现,调用完毕下载方法后,主线程就结束了.
…最后经过一番思索解决方案如下.

创建下载线程

线程的知识我有点忘了,合成音频的方法最后会回调onSynthesizeCompleted这个方法,我在下载线程DemoListRunable中设置一个isEnd标记,当开始下载一个音频的时候,把isEnd设置为flase,下载完毕后设置为true.
在主线程中,通过不断的来查询这个标记,从而知道是否下载完毕。

package demo;
import com.iflytek.cloud.speech.SpeechConstant;
import com.iflytek.cloud.speech.SpeechError;
import com.iflytek.cloud.speech.SpeechSynthesizer;
import com.iflytek.cloud.speech.SynthesizeToUriListener;
public class DemoListRunable implements Runnable
{
   
   
	public static boolean isEnd=false;
	String fileName;
	String Input;
	String voiceName;
	public DemoListRunable(String voiceName, String fileName,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值