Как установить громкость для метода преобразования текста в речь?

Я в растерянности. Я хочу иметь возможность регулировать громкость разговора. Что бы я ни делал, я не могу увеличить его громкость. Как мне сделать его таким же громким, как в настройках 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);

person mmmmm5    schedule 26.09.2011    source источник


Ответы (2)


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

EDIT: Этот код отлично работает для меня...

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, и громкость речи установлена ​​​​правильно.

person Squonk    schedule 26.09.2011
comment
AudioManager.Stream_MUSIC не влияет на метод Speak. - person mmmmm5; 26.09.2011
comment
@ mmmmm5: AudioManager.Stream_MUSIC не влияет на метод Speak. Да, по крайней мере, на моем HTC Desire. Вы, должно быть, делаете что-то не так, или это просто не поддерживается вашим устройством/эмулятором, или вам нужно использовать STREAM_SYSTEM, как предлагает Слейтон. Посмотрите код, который я добавил в свое редактирование — он отлично работает, и я могу установить громкость речи в диапазоне от 0 до 15. - person Squonk; 27.09.2011
comment
Спасибо. Оно работает. Две вещи мешали мне думать, что это не так: (1) сравнение тона DMTF с речью. Тон DMTF намного громче. (2) я выполнял какое-то другое действие, которое отрезало речь от завершения, поэтому она звучала мягче - person mmmmm5; 27.09.2011
comment
Я нашел способ сделать громкость речи очень громкой, и этим можно управлять с помощью кнопок громкости устройства. Используйте setVolumeControlStream (int streamType) - person mmmmm5; 27.09.2011
comment
Но как я могу отключить все звуки, чтобы даже другое приложение не могло изменить громкость. я имею в виду, как полностью отключить AudioManager из другого приложения. @Сквонк - person Sazzad Hissain Khan; 28.11.2013

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

STREAM_VOICE_CALL, STREAM_SYSTEM, STREAM_RING, STREAM_MUSIC or STREAM_ALARM
person slayton    schedule 26.09.2011
comment
Я пытался использовать методы AudioManager (setStreamVolume, getStreamMaxVolume), чтобы сделать метод говорить громче. Но AudioManager не влияет на метод говорить. - person mmmmm5; 26.09.2011