Как озвучить текст из строки?
Есть у меня задача озвучить текст, состоит он лишь из некоторых кириллических букв, так-что мудрить сильно не надо. Примерно представляю, что нужно отделяно записать каждый звук, соответствующий букве и потом их воспроизводить в порядке букв в заданной строке. А как конкретно реализовать идей не много. Причём без использования сторонних библиотек. Есть у кого идеи по реализации или примеры? Вот код, который есть на данный момент, проблема в том, что он озвучивает все буквы одновременно, а мне нужно по порядку, так как они идут в строке
import javax.sound.sampled.*;
import java.io.File;
public class Main {
public static void main(String args[]) {
String str = "Артист";
char[] strarr = str.toCharArray();
for(int i = 0; i < str.length(); i++)
{
if (strarr.equals("р"));
{
makeSound("src//sounds//Р.wav");
}
if (strarr.equals("А"));
{
makeSound("src//sounds//А.wav");
}
}
}
public static void makeSound(String path){
File lol = new File(path);
try{
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(lol));
clip.start();
Thread.sleep(2000);
clip.stop();
} catch (Exception e){
e.printStackTrace();
}
}
}
UPD Сделал проигрывание звуков, но слова получаются сильно дёрганными. Каким способом можно это решить? (Код ужасный, знаю).
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
public class Main {
public static void main(String args[]) throws FileNotFoundException, JavaLayerException {
String str = "тест";
List<Character> chars = str.toLowerCase(Locale.ROOT).chars().mapToObj(c -> (char) c).collect(Collectors.toList());
Iterator<Character> iter = chars.iterator();
for(int i = 0; i < str.length(); i++)
{
String data = chars.get(i).toString();
if (data.equals("а"))
{
PlaySound("src//sounds//А2.mp3");
}
if (data.equals("у"))
{
PlaySound("src//sounds//У.mp3");
}
if (data.equals("е"))
{
PlaySound("src//sounds//Е.mp3");
}
if (data.equals("і"))
{
PlaySound("src//sounds//І.mp3");
}
if (data.equals("и"))
{
PlaySound("src//sounds//И2.mp3");
}
if (data.equals("о"))
{
PlaySound("src//sounds//О.mp3");
}
if (data.equals("н"))
{
PlaySound("src//sounds//Н2.mp3");
}
if (data.equals("в"))
{
PlaySound("src//sounds//В2.mp3");
}
if (data.equals("с"))
{
PlaySound("src//sounds//С2.mp3");
}
if (data.equals("к"))
{
PlaySound("src//sounds//К2.mp3");
}
if (data.equals("п"))
{
PlaySound("src//sounds//П2.mp3");
}
if (data.equals("р"))
{
PlaySound("src//sounds//Р2.mp3");
}
if (data.equals("т"))
{
PlaySound("src//sounds//Т2.mp3");
}
}
}
public static void PlaySound(String path) throws FileNotFoundException, JavaLayerException
{
FileInputStream file = new FileInputStream(path);
Player play = new Player(file);
play.play();
}
}