Android TTS регулятор громкости - PullRequest
2 голосов
/ 28 декабря 2010

Есть ли способ контролировать громкость двигателя TTS при отправке запроса на двигатель TTS? Могу ли я использовать AudioManager здесь?

Спасибо.

Ответы [ 5 ]

11 голосов
/ 28 июня 2014

вы можете получить это в методах TTS speak (), но только начиная с уровня API 11.

Чтобы обеспечить обратную совместимость, вы можете настроить таргетинг на более высокий уровень API (с более низким min sdk) и использовать декоратор "@TargetApi (api_level)" вместе с проверкой версии sdk.

/**  speak the single word, at a lower volume if possible */
protected void speakOneWord(String text) {
    int apiVer = android.os.Build.VERSION.SDK_INT;
    if (apiVer >= 11){
        speakApi13(text);
    } else {
        // compatibility mode
        HashMap<String, String> params = new HashMap<String, String>();
        mTts.speak(text, TextToSpeech.QUEUE_ADD, params);
    }
}   

/**  speak at a lower volume, for platform >= 13 */
@TargetApi(13)
protected void speakApi13(String text) {
    HashMap<String, String> params = new HashMap<String, String>();
    params.put(TextToSpeech.Engine.KEY_PARAM_VOLUME, "0.1");
    mTts.speak(text, TextToSpeech.QUEUE_ADD, params);
}   
2 голосов
/ 12 апреля 2017

speak() метод теперь может управлять громкостью TTS

добавлен на уровне API 21

int speak (CharSequence text, 
                int queueMode, 
                Bundle: KEY_PARAM_VOLUME;..., 
                String utteranceId)

Параметр KEY_PARAM_VOLUME, ключ для указания громкости речи относительно текущего типа потокаиспользуется при произнесении текста.
Громкость указывается в виде числа с плавающей запятой в диапазоне от 0 до 1, где 0 - тишина, а 1 - максимальная громкость (поведение по умолчанию).

2 голосов
/ 28 декабря 2010

Да, в ответ на ваш вопрос вы можете использовать AudioManager для звука TTS.

Если вы хотите установить громкость в своем коде, вам нужно использовать *Методы 1005 * и setStreamVolume().

Если вы хотите предоставить пользователю контроль над громкостью (это может зависеть от того, как / когда ваша программа устанавливает громкость), этот вопрос указывает, чтоВы должны позвонить setVolumeControlStream() во время OnCreate().

РЕДАКТИРОВАТЬ: И нет, вы не можете управлять громкостью в методах движка TTS (то есть метод Speak()).

1 голос
/ 29 октября 2013

int iAlertVolume - от 0% до 100%, пользователь устанавливает это значение на желаемую громкость.

setVolumeControlStream(AudioManager.STREAM_MUSIC);
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int amStreamMusicMaxVol = am.getStreamMaxVolume(am.STREAM_MUSIC);
am.getStreamVolume(am.STREAM_MUSIC);

Фактическая громкость:

am.setStreamVolume(am.STREAM_MUSIC, (iAlertVolume*amStreamMusicMaxVol)/100,0 );

The 0в конце говорит не отображать регулятор громкости системы, установите 1, чтобы увидеть системный Ctrl

1 голос
/ 28 июня 2013

Попробуйте это для управления настройками:

AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
sb2value =am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
am.setStreamVolume(AudioManager.STREAM_MUSIC, sb2value, 0);
...