• android 讯飞语音引擎3.0 文字转语音 默认粤语播报


    粤语语音引擎apk及粤语资源包
    android 6.0 平台老人机需求设备默认支持粤语离线播报,在网上找了许多资料和apk都没有解决。
    发现讯飞的TTS3.0联网下载粤语包后可以完美支持。然后尝试反编译修改默认语音最后预置apk及资源包,最终解决了这个问题。
    1. 预置apk
    首先预置apk,预置apk的方法不再赘述。参考:预置apk
    2. 预置粤语资源
    资源包预置在 storage/sdcard0/Speechcloud 目录下,注意编译时无法将文件预置进设备 sdcard,需要先将文件预置到如apk预置目录或/system/sdcard/或其他rom中已存在的目录下,然后写Service监听开机广播,判断首次开机时将/system/sdcard/目录下预置的资源文件copy到到 storage/sdcard0/Speechcloud 。可以参考另一篇文章:Android MTK预置音乐/图片/文件
    3. 编写demo测试
    关键方法:

    +import android.speech.tts.TextToSpeech;
    +import java.util.Locale;
    
    
    + private TextToSpeech mTextToSpeech;
    + private void sendCustomBroadcast(String paramString){
    + if(mTextToSpeech == null) {
    + mTextToSpeech=new TextToSpeech(mContext, new TextToSpeech.OnInitListener() {
    + @Override
    + public void onInit(int status) {
    + if (status==TextToSpeech.SUCCESS) {
    + int supported=mTextToSpeech.setLanguage(Locale.US);//此处不影响语言
    + if ((supported!=TextToSpeech.LANG_AVAILABLE)&&(supported!=TextToSpeech.LANG_COUNTRY_AVAILABLE)) {
    + Log.i("mh","TextToSpeech error");
    + }
    + }
    + }
    + });
    + }
    + mTextToSpeech.speak(paramString, TextToSpeech.QUEUE_FLUSH, null); 
    + }


    4. 将默认语音引擎设置为讯飞
    Android 6.0 修改方法:frameworks/base/core/java/android/speech/tts/TtsEngines.java

    public String getDefaultEngine() {
        String engine = getString(mContext.getContentResolver(),
        Settings.Secure.TTS_DEFAULT_SYNTH);
    +   if(engine==null) {
    +       engine ="com.iflytek.speechcloud";
    +   }
        return isEngineInstalled(engine) ? engine :     getHighestRankedEngineName();
    }    

    以上可以自行定制如拨号盘按键播报,来电报号,电话簿报号等。

  • 相关阅读:
    深入理解 C/C++ sizeof() 运算符
    Luogu2040 | 打开所有的灯 (广搜+状压)
    Intel 8086 标志寄存器及JCC指令表
    Intel 8086 常用汇编指令表
    PTA L2-029 | 特立独行的幸福 (打表+递归)
    C++中为什么要用指针,而不直接使用对象?
    c#中基本类型占用字节数
    c++TXT文件读入
    较为初始的学生成绩管理系统
    C++中各种数据成员及成员函数的定义及使用
  • 原文地址:https://www.cnblogs.com/gleaner/p/12502136.html
Copyright © 2020-2023  润新知