控制 TextToSpeech 函数调用的音量

问题描述 投票:0回答:2

大家好

我一直在四处寻找,但似乎找不到合适的答案来集成到我的功能中。我目前基本上使用以下代码:

    private void sayHello(String timeString) {

    textToSpeech.speak(timeString,
    TextToSpeech.QUEUE_FLUSH,
    null);
}

此代码工作正常,但它太大声并且只能由设备本身的音量控制。我希望能够调整/硬编码/能够使用微调器来控制 TTS 的音量,但似乎无法相应地做到这一点。

该功能可用于该库吗?可以实现吗?
我还尝试在我的代码中实现以下内容:

KEY_PARAM_VOLUME

但是,我看不到任何使用此方法的示例,并且显示创建函数时出现错误。有什么建议吗?

java android text-to-speech
2个回答
5
投票
public class MainActivity extends AppCompatActivity {

    int androidAPILevel = android.os.Build.VERSION.SDK_INT;
    TextToSpeech tts;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int i) {
                start();
            }
        });
    }

    private void start() {
        if (androidAPILevel < 21) {
            HashMap<String,String> params = new HashMap<>();
            params.put(TextToSpeech.Engine.KEY_PARAM_VOLUME, "0.5"); // change the 0.5 to any value from 0-1 (1 is default)
            tts.speak("This is a volume test.", TextToSpeech.QUEUE_FLUSH, params);
        } else { // android API level is 21 or higher...
            Bundle params = new Bundle();
            params.putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME, 0.5f); // change the 0.5f to any value from 0f-1f (1f is default)
            tts.speak("This is a volume test.", TextToSpeech.QUEUE_FLUSH, params, null);
        }
    }
}

0
投票

几年前,我向 Anki (Damien) 询问设置 TTS 音量的功能。他将其列入了要考虑的事项清单,但此后没有采取任何行动。有这么难的问题吗?我不敢相信更多的人不要求音量控制。 我下载了一套带音频的意大利语卡片,我的卡片会播放该音频,然后播放 2 个 TTS 语音,以听到三种不同的发音。不幸的是,TTS 声音太大,所以我要么伤了耳朵,要么听不到下载的音频。 Trusty Turtle 提供的答案看起来不错,但我使用的是 Mac 和 iPad。我对编程的了解不够,无法自己翻译代码。理想情况下,应该有一个处理任何操作系统的通用版本。看来我还要再忍耐几年。

© www.soinside.com 2019 - 2024. All rights reserved.