private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
Audio audio = new Audio("E:\\media\\media\\Voice1\\null.wav");
if (textBox1.Text.Length == 0) { audio.Play(); }
for (int i = 0; i < textBox1.Text.Length; i++)
{
Thread.Sleep(130);
object o = null;
o = (object)"E:\\media\\media\\Voice1\\0.wav";
if (textBox1.Text == 'а' || textBox1.Text == 'А')
{ o = (object)"E:\\media\\media\\Voice1\\1.wav"; }
if (textBox1.Text == 'б' || textBox1.Text == 'Б')
{ o = (object)"E:\\media\\media\\Voice1\\2.wav"; }
if (textBox1.Text == 'в' || textBox1.Text == 'В')
{ o = (object)"E:\\media\\media\\Voice1\\3.wav"; }
if (textBox1.Text == 'г' || textBox1.Text == 'Г')
{ o = (object)"E:\\media\\media\\Voice1\\4.wav"; }
if (textBox1.Text == 'д' || textBox1.Text == 'Д')
{ o = (object)"E:\\media\\media\\Voice1\\5.wav"; }
if (textBox1.Text == 'е' || textBox1.Text == 'Е')
{ o = (object)"E:\\media\\media\\Voice1\\6.wav"; }
if (textBox1.Text == 'ё' || textBox1.Text == 'Ё')
{ o = (object)"E:\\media\\media\\Voice1\\7.wav"; }
if (textBox1.Text == 'ж' || textBox1.Text == 'Ж')
{ o = (object)"E:\\media\\media\\Voice1\\8.wav"; }
if (textBox1.Text == 'з' || textBox1.Text == 'З')
{ o = (object)"E:\\media\\media\\Voice1\\9.wav"; }
if (textBox1.Text == 'и' || textBox1.Text == 'И')
{ o = (object)"E:\\media\\media\\Voice1\\10.wav"; }
if (textBox1.Text == 'й' || textBox1.Text == 'Й')
{ o = (object)"E:\\media\\media\\Voice1\\11.wav"; }
if (textBox1.Text == 'к' || textBox1.Text == 'К')
{ o = (object)"E:\\media\\media\\Voice1\\12.wav"; }
if (textBox1.Text == 'л' || textBox1.Text == 'Л')
{ o = (object)"E:\\media\\media\\Voice1\\13.wav"; }
if (textBox1.Text == 'м' || textBox1.Text == 'М')
{ o = (object)"E:\\media\\media\\Voice1\\14.wav"; }
if (textBox1.Text == 'н' || textBox1.Text == 'Н')
{ o = (object)"E:\\media\\media\\Voice1\\15.wav"; }
if (textBox1.Text == 'о' || textBox1.Text == 'О')
{ o = (object)"E:\\media\\media\\Voice1\\16.wav"; }
if (textBox1.Text == 'п' || textBox1.Text == 'П')
{ o = (object)"E:\\media\\media\\Voice1\\17.wav"; }
if (textBox1.Text == 'р' || textBox1.Text == 'Р')
{ o = (object)"E:\\media\\media\\Voice1\\18.wav"; }
if (textBox1.Text == 'с' || textBox1.Text == 'С')
{ o = (object)"E:\\media\\media\\Voice1\\19.wav"; }
if (textBox1.Text == 'т' || textBox1.Text == 'Т')
{ o = (object)"E:\\media\\media\\Voice1\\20.wav"; }
if (textBox1.Text == 'у' || textBox1.Text == 'У')
{ o = (object)"E:\\media\\media\\Voice1\\21.wav"; }
if (textBox1.Text == 'ф' || textBox1.Text == 'Ф')
{ o = (object)"E:\\media\\media\\Voice1\\22.wav"; }
if (textBox1.Text == 'х' || textBox1.Text == 'Х')
{ o = (object)"E:\\media\\media\\Voice1\\23.wav"; }
if (textBox1.Text == 'ц' || textBox1.Text == 'Ц')
{ o = (object)"E:\\media\\media\\Voice1\\24.wav"; }
if (textBox1.Text == 'ч' || textBox1.Text == 'Ч')
{ o = (object)"E:\\media\\media\\Voice1\\25.wav"; }
if (textBox1.Text == 'ш' || textBox1.Text == 'Ш')
{ o = (object)"E:\\media\\media\\Voice1\\26.wav"; }
if (textBox1.Text == 'щ' || textBox1.Text == 'Щ')
{ o = (object)"E:\\media\\media\\Voice1\\27.wav"; }
if (textBox1.Text == 'ы' || textBox1.Text == 'Ы')
{ o = (object)"E:\\media\\media\\Voice1\\28.wav"; }
if (textBox1.Text == 'э' || textBox1.Text == 'Э')
{ o = (object)"E:\\media\\media\\Voice1\\29.wav"; }
if (textBox1.Text == 'ю' || textBox1.Text == 'Ю')
{ o = (object)"E:\\media\\media\\Voice1\\30.wav"; }
if (textBox1.Text == 'я' || textBox1.Text == 'Я')
{ o = (object)"E:\\media\\media\\Voice1\\31.wav"; }
Thread t = new Thread(new ParameterizedThreadStart(A));
t.Start(o);
}
button1.Enabled = true;
}
static void A(object o)
{
Audio audio = new Audio("E:\\media\\media\\Voice1\\null.wav");
audio.Open((string)o, true); Thread.Sleep(200); audio.Stop();
}
Говорилка
Доброе время суток. Начал разрабатывать программу чтения русского текста(вводишь текст, прога читает ввслух). Возникла следующая проблема-чтение идет с задержкой и возникает эфект заикания. как улучшить качество? Попробовал организовать многопоточность, стало лучше, но все же речь неприемлима. Есть задумка работать на низком уровне(напрямую с звуковой картой) но как реализовать-непонятно.
Ну и по реализации... мрак конечно. Сделайте хотя бы имя файла = код символа - будет меньше if'ов + sprintf. Уже не говорю про lower case... "Низкий уровень работы" Вас не спасет - это 100% :rolleyes:
А вообще Вам это зачем? Пользуйтесь SAPI - всё уже давно написано и уж точно более приемлемо, чем побуквенное воспроизведение...
Спасибо. Критика реализации понятна, но это черновой вариант, без оформления и записи по слогам. Вопрос в том, как организовать беззапиночную обработку текста. Многопоточность или что-либо еще? Готовые варианты не устраивают тем, что этот вопрос мне интересен разработкой больше, чем результатом.