Добрый день, я использую TextToSpeech что выводить текст через динамики и у меня всё получается, но мне иногда нужно приостанавливать воспроизведение текста и потом продолжать воспроизводить на том мо - вопрос №5487996

Добрый день, я использую TextToSpeech что выводить текст через динамики и у меня всё получается, но мне иногда нужно приостанавливать воспроизведение текста и потом продолжать воспроизводить на том моменте где остановился. Как это сделать?
23.05.24
1 ответ

Лучший ответ по мнению автора

Попробуй так:

import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;

public class TTSPlayer {
private Voice voice;
private Thread speechThread;
private volatile boolean paused = false;
private volatile boolean stopped = false;

public TTSPlayer() {
System.setProperty(«freetts.voices»,
«com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory»);
VoiceManager voiceManager = VoiceManager.getInstance();
voice = voiceManager.getVoice(«kevin16»);

if (voice == null) {
System.err.println(«Voice not found»);
System.exit(1);
}
voice.allocate();
}

public void speak(String text) {
stopped = false;
speechThread = new Thread(() -> {
String[] words = text.split(" ");
for (String word: words) {
if (stopped) {
break;
}
while (paused) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
voice.speak(word);
}
});
speechThread.start();
}

public void pause() {
paused = true;
}

public void resume() {
paused = false;
}

public void stop() {
stopped = true;
if (speechThread != null) {
speechThread.interrupt();
}
}

public static void main(String[] args) {
TTSPlayer tts = new TTSPlayer();
String text = «Hello! This is a test message to demonstrate pause and resume functionality in text to speech.»;
tts.speak(text);
try {
Thread.sleep(3000);
System.out.println(«Pausing...»);
tts.pause();
Thread.sleep(3000);
System.out.println(«Resuming...»);
tts.resume();
Thread.sleep(5000);
System.out.println(«Stopping...»);
tts.stop();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

24.05.24
Лучший ответ по мнению автора

Виталий

от 100 p.
Читать ответы
Посмотреть всех экспертов из раздела Технологии > Java/J2EE
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store