Google Android TTS语音的可读名称

问题描述 投票:1回答:1

我正在应用程序中使用TextToSpeech。我想添加一个允许用户选择声音的设置。我从当前的TTS引擎(com.google.android.tts,我只需要中文语音)获取语音列表,并且其名称已添加到设置中:

val voices = tts.voices.filter {it.locale == Locale.SIMPLIFIED_CHINESE}

它们的名称看起来完全不可读,例如:

cmn-cn-x-ssa-local
cmn-cn-x-ccc-network
cmn-cn-x-ccd-local

是否有一种方法可以获取人类可读的语音名称?或至少得到他们的性别?

例如,TextToSpeech.EngineInfo包含一个包含引擎唯一名称的name字段和一个包含人类可读名称的label字段。也许声音也有类似的东西吗?

android text-to-speech
1个回答
0
投票

我已经用这种方式格式化,也许可以改进,但至少看起来比默认列表要好。

String sal = voices.get(e).name;

            if(sal.contains("#")) {

                String[] pre = sal.split("#");
                String sec = pre[1].replace("_", " ");
                sec = sec.replace("-", " ");
                String[] sal2 = pre[0].split("-");
                sal = sal2[0] + "_" + sal2[1].toUpperCase() + " (" + utils.capitalize(sec) + ")";
            }

            if(sal.contains("-x-")) {

                String[] noSal = sal.split("-x-");
                String[] noSal2 = noSal[0].split("-");
                String noSal3 = noSal[1].replace("-", " ");
                sal  = noSal2[0] + "_" + noSal2[1].toUpperCase() + " (" + utils.capitalize(noSal3) + ")";
            }

            if(sal.contains("-")){
                String[] finalSal = sal.split("-");
                sal = finalSal[0] + "_" + finalSal[1] + " (" + utils.capitalize(finalSal[2]) + ")";
            }

utils.capitalize()这是一个大写单词的小功能。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.