Android текст в речь мужской голос - PullRequest
5 голосов
/ 22 марта 2012

У меня есть рабочий текст в речь, но мне было интересно, вместо женского голоса, когда приложение вызывает его для воспроизведения, вместо него будет мужской голос?

Ответы [ 6 ]

9 голосов
/ 12 января 2017

Теперь можно использовать мужской / женский голос и динамически изменять его из интерфейса приложения.Определите TTS следующим образом (добавьте google tts engine в конструктор):

tts = new TextToSpeech(context, this, "com.google.android.tts");

contex = активность / приложение

this = TextToSpeech.OnInitListener

Из списка tts.getVoices() выберите нужный голос по его имени, например:

for (Voice tmpVoice : tts.getVoices()) {
        if (tmpVoice.getName().equals(_voiceName)) {
            return tmpVoice;
            break;
        }
}

Примечание: вам нужно установить _voiceName, получив жестко закодированное имя_ голоса из tts.getVoices().Например: для английского мужчины это будет: "en-us-x-sfg # male_1-local"

1 голос
/ 20 октября 2018

Возможно изменить голос на мужской

вот мой код, надеюсь, он вам поможет!

//onCreate  
T2S= new TextToSpeech(testApp.getInstance().getApplicationContext(), this, "com.google.android.tts");
    Set<String> a=new HashSet<>();
    a.add("male");//here you can give male if you want to select male voice.
    Voice v=new Voice("en-us-x-sfg#male_2-local",new Locale("en","US"),400,200,true,a);
    T2S.setVoice(v);
    T2S.setSpeechRate(0.8f);

реализует TextToSpeech.OnInitListener для Activity.

@Override
public void onInit(int status) {
    if (status == TextToSpeech.SUCCESS) {
        Set<String> a=new HashSet<>();
        a.add("male");//here you can give male if you want to select male voice.
        //Voice v=new Voice("en-us-x-sfg#female_2-local",new Locale("en","US"),400,200,true,a);
        Voice v=new Voice("en-us-x-sfg#male_2-local",new Locale("en","US"),400,200,true,a);
        T2S.setVoice(v);
        T2S.setSpeechRate(0.8f);

       // int result = T2S.setLanguage(Locale.US);
        int result = T2S.setVoice(v);

        if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED) {
            Log.e("TTS", "This Language is not supported");
        } else {
           // btnSpeak.setEnabled(true);
            speakOut(mMessageVoice);
        }

    } else {
        Log.e("TTS", "Initilization Failed!");
    }
}

И добавить эту функцию также:

private void speakOut(String message) {

    t1.speak(message, TextToSpeech.QUEUE_FLUSH, null);
}
1 голос
/ 03 июля 2015

Возможно изменить голос на мужской. Задайте в onCreate(): tts.setEngineByname("com.google.android.tts") и установите для службы Google tts значение по умолчанию в текстовых настройках и настройках речи и установите мужской голос в службе Google tts.

Таким образом, вы можете использовать любые сторонние службы Android TTS и проверить устройство. Или попросите установить.

1 голос
/ 23 марта 2012

Вы не можете заставить Android TextToSpeech звучать как мужчина.Если вы измените значение TextToSpeech.setPitch () на что-то низкое, например 0,1, это будет звучать очень плохо.

Ваш единственный вариант - попробовать другой механизм преобразования текста в речь илижить с женским звучащим голосом.

1 голос
/ 22 марта 2012

Это зависит от базового двигателя TTS.Некоторые настраиваются и имеют разные голоса (мужской, женский и т. Д.), Некоторые имеют только один голос.В любом случае вы не можете управлять этим из своего приложения, пользователь должен изменить настройки движка TTS из приложения Настройки.Вы могли только поручить им установить определенный движок и настроить ваше приложение для его использования.

0 голосов
/ 18 июня 2017

В любом случае вы можете настроить свой Android Text-to-Speech для службы Google TTS:

  1. tts = new TextToSpeech(context, this, "com.google.android.tts") или
  2. Установите новый мужской (английский) голос и установите его по умолчанию в Android.

Надеюсь, это поможет.

...