帖子

【官方】合成时如何在程序中用代码设置语记的默认发音人

[复制链接]
  • TA的每日心情
    开心
    2017-12-29 09:56
  • 签到天数: 46 天

    [LV.5]常住居民I

    27507  楼主| 王水 发表于 2015-8-20 09:18:06 1#
    本帖最后由 王水 于 2015-8-25 19:10 编辑

    首先要说明的是,在开发者的程序代码中是可以设置所要使用的语记发音人的,只要设置mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");就可以了。但是有个问题!我们知道语记的中的发音人资源是要下载了才能使用(后续的部分发音人可能要购买后才能下载),那么如果我们设置的发音人语记中没有下载不就出bug了吗?
    在官方的Demo中是通过跳转到语记设置默认发音人,然后在代码设置
    mTts.setParameter(SpeechConstant.VOICE_NAME, "");//发音人为空,表示使用语记默认发音人
    的方式来解决这个问题的,(具体代码可以看一下Demo)

    那么问题又来了!如果我们就是不想跳到语记去设置,就想在我们的代码中进行设置怎么办呢?好办!我们的SDK中有获取语记本地发音人资源的方法:
    SpeechUtility.getUtility().getParameter(SpeechConstant.PLUS_LOCAL_TTS);
    在Demo的com.iflytek.speech.util包下的checkLocalResource()方法中有类似功能的演示。下面是获取到的发音人列表,大家需要解析一下就可以了:
    QQ截图20150****90615.png
    获取到语记本地发音人之后就可以提取出name字段,然后放心地在你的代码中设置啦。


    最近碰到一个开发者出现上面设置语记发音人方法“失效”的情况,经检查发现在语记的合成设置界面中:
    QQ图片20150****85659.png

    “全局生效”勾选打开后会导致无论你在代码中设置为那个发音人,都只能合成出语记默认的那个发音人的声音,所以大家如果想真正实现在代码控制语记的发音人一定要将全局生效关闭这里说明一下,语记中设置“全局生效”选项并不是闲的蛋疼故意刁难大家的,这个设置项是为了让一些听书软件可以方便的调用语记的合成服务。

    被上帝咬了一口的苹果 发表于 2015-8-20 10:21:23
    2#
    {:soso_e163:}
    使用道具 举报 回复
    iflytek-小黑 发表于 2015-8-20 10:32:33
    3#
    哇塞,6了个大6
    使用道具 举报 回复
    wushaoliu 发表于 2015-8-31 10:10:52
    4#
    停一个,,刚好是我需要的
    使用道具 举报 回复
    aab 发表于 2016-10-24 17:25:21
    5#
    这个还可以下载吗。
    使用道具 举报 回复
     楼主| 王水 发表于 2016-10-26 08:49:19
    6#
    aab 发表于 2016-10-24 17:25
    这个还可以下载吗。

    下载什么呢?
    使用道具 举报 回复
    喜欢雨天的我 发表于 2016-11-11 08:50:26
    7#
    可以,有帮助。
    使用道具 举报 回复
    huihuiguoguo 发表于 2016-12-28 20:46:42
    8#
    使用语记的话,还需要购买离线的语音合成和离线命令词识别吗?是要在语记和离线SDK中二选一,还是配合起来用?
    使用道具 举报 回复