Android文本到语音的时间控制率



你好,由于某些原因,我需要根据时间值控制TTS率因子,例如,我知道如何设置一个简单的TTS,例如以下代码

TextToSpeech tts = new TextToSpeech(this, this);
tts.setLanguage(Locale.US);
tts.speak("Wow I am working", TextToSpeech.QUEUE_ADD, null);
为了控制文本语音速率,我们可以使用setSpeechRate(value),例如
tts.setSpeechRate(2.0) //doubles the normal speed

但是我不能实现一种方法,使速率应该根据时间因素计算,比如10秒,所以这个短语应该在指定的时间内完成语音。

如果这些是您唯一的规范,您可以使用tts.synthesizeToFile()并将输出保存在filesdir中的某个地方,然后使用mediametadataretriiever告诉您它在速度刻度1下的长度。然后用持续时间除以你想要的时间,这就是你的新音阶。

编辑:

用于创建合成文件:

val sentence="this is sample text"
val f = File(filesDir, "ttstemprecord")
val b = Bundle()
tts.synthesizeToFile(sentence, b, f, "")

获取持续时间:

val soundPath=getFilesDir().absolutePath + "ttstemprecord"
val mmr= MediaMetadataRetriever()
mmr.setDataSource(soundPath)  dur=Integer.parseInt(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION))

速度:

val speed=dur/durationThatIWant

最新更新