代码之家  ›  专栏  ›  技术社区  ›  Nero

控制TextToSpeech函数调用的音量

  •  1
  • Nero  · 技术社区  · 7 年前

    我四处寻找,但似乎找不到一个合适的答案来整合我的职能。我目前基本上使用以下代码:

        private void sayHello(String timeString) {
    
        textToSpeech.speak(timeString,
        TextToSpeech.QUEUE_FLUSH,
        null);
    }
    

    这个代码工作正常,但是 太吵了 由设备本身的音量控制 调整/硬编码/能够使用微调器 控制TTS的音量,但似乎不能相应地这样做。

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

    KEY_PARAM_VOLUME
    

    1 回复  |  直到 7 年前
        1
  •  3
  •   Nerdy Bunz    7 年前
    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);
            }
        }
    }