Как установить громкость для метода преобразования текста в речь? - PullRequest
6 голосов
/ 26 сентября 2011

Я в растерянности.Я хочу иметь возможность регулировать громкость речи.Что бы я ни делал, я не могу увеличить его громкость.Как сделать так громко, как в настройках Android (как показано ниже)?

Системные настройки -> Голосовой ввод и вывод -> Настройки преобразования текста в речь -> Прослушать пример

Мой код на данный момент:

AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
mAudioManager.setSpeakerphoneOn(true);
int loudmax = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION);
mAudioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,loudmax, AudioManager.FLAG_PLAY_SOUND);
mTts.speak(name,TextToSpeech.QUEUE_FLUSH, null);

Ответы [ 2 ]

17 голосов
/ 26 сентября 2011

Попробуйте использовать AudioManager.STREAM_MUSIC при вызове метода setStreamVolume(...). Пример речи зависит от громкости мультимедиа, если я отрегулирую громкость воспроизведения музыки на своем телефоне, поэтому я думаю, STREAM_MUSIC - это то, что вам нужно.

РЕДАКТИРОВАТЬ: Этот код прекрасно работает для меня ...

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int amStreamMusicMaxVol = am.getStreamMaxVolume(am.STREAM_MUSIC);
am.setStreamVolume(am.STREAM_MUSIC, amStreamMusicMaxVol, 0);
tts.speak("Hello", TextToSpeech.QUEUE_FLUSH, null);

Максимальная громкость для STREAM_MUSIC на моем телефоне - 15, и я даже проверил это, заменив amStreamMusicMaxVol в моем звонке на am.setStreamVolume(...) выше значениями 3, 6, 9, 12, 15 и громкостью речи правильно установлена.

3 голосов
/ 26 сентября 2011

В вашем коде вы меняете объем уведомлений. Громкость TTS воспроизводится на том же уровне громкости, что и уведомления? Я подозреваю, что это не так, и, вероятно, он воспроизводится на STREAM_SYSTEM или STREAM_MUSIC. Попробуйте изменить тип потока на один из следующих:

STREAM_VOICE_CALL, STREAM_SYSTEM, STREAM_RING, STREAM_MUSIC or STREAM_ALARM
...