Android TTS 音量控制
向 TTS 引擎发送请求时,有什么方法可以控制 TTS 引擎的音量吗?我可以在这里使用 AudioManager 吗?
谢谢。
Is there any way to control volume of TTS engine when sending request to TTS engine? Can I able to use AudioManager here?
Thank You.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以在 TTS talk() 方法中获得此信息,但只能从 API 级别 11 开始。
为了保持向后兼容性,您可以针对更高的 api 级别(具有较低的 min sdk)并使用“@TargetApi(api_level)”装饰器sdk版本检查。
you can get this in TTS speak() methods, but only starting from API level 11.
To keep backwards compatibility, you could target the higher api level (with lower min sdk) and use a "@TargetApi(api_level)" decorator along with sdk version check.
speak()
方法现在可以控制API 级别 21 中添加的
TTS 音量参数
KEY_PARAM_VOLUME
,用于指定朗读文本时相对于当前流类型音量的语音音量的键。< br>音量指定为 0 到 1 之间的浮点数,其中 0 表示静音,1 表示最大音量(默认行为)。
speak()
method can now control TTS volumeadded in API level 21
Parameter
KEY_PARAM_VOLUME
, key to specify the speech volume relative to the current stream type volume used when speaking text.Volume is specified as a float ranging from 0 to 1 where 0 is silence, and 1 is the maximum volume (the default behavior).
是的,正如您的问题所问,您可以使用 AudioManager TTS 音频。
如果您想在代码中设置音量,则需要使用
getStreamVolume()
和setStreamVolume()
方法。如果您想让用户控制音量(这可能取决于您的程序设置音量的方式/时间),这个问题 指出您必须在
OnCreate()
期间调用setVolumeControlStream()
。编辑:不,您无法控制 TTS 引擎的 方法(即
Speak()
方法)。Yes, as your question asks, you are able to use AudioManager for TTS audio.
If you want to set volume in your code, you'll want to use the
getStreamVolume()
andsetStreamVolume()
methods.If you want to give the user control over the volume (this may depend on how/when your program sets volume), this question points out that you have to call
setVolumeControlStream()
duringOnCreate()
.EDIT: And no, you cannot control volume within the TTS engine's methods (i.e. the
Speak()
method).尝试以下方法来控制设置:
Try this to control the settings:
int iAlertVolume 是 0% 到 100%,用户将其设置为所需的音量。
实际音量设置:
am.setStreamVolume(am.STREAM_MUSIC, (iAlertVolume*amStreamMusicMaxVol)/100,0 );
末尾的0表示不显示系统音量控制,设置为1即可查看系统控制
int iAlertVolume is a 0% to 100%, user sets this to desired volume.
Actual Volume setting:
am.setStreamVolume(am.STREAM_MUSIC, (iAlertVolume*amStreamMusicMaxVol)/100,0 );
The 0 at the end says don't display the system volume control, set to 1 to see system ctrl
直到我添加了对 setLegacyStreamType() 的调用(如下所示(在 Kotlin 中)),上述任何内容都对我不起作用:
Nothing above worked for me until I added a call to setLegacyStreamType() as shown below (in Kotlin):