Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Говорилка

42K
12 декабря 2009 года
ivan_kult
27 / / 12.12.2009
Доброе время суток. Начал разрабатывать программу чтения русского текста(вводишь текст, прога читает ввслух). Возникла следующая проблема-чтение идет с задержкой и возникает эфект заикания. как улучшить качество? Попробовал организовать многопоточность, стало лучше, но все же речь неприемлима. Есть задумка работать на низком уровне(напрямую с звуковой картой) но как реализовать-непонятно.
Код:
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();
        }
17K
12 декабря 2009 года
savostin
37 / / 12.10.2006
Попробовать записать не буквы, а звуки, а также сочетания звуков (слоги), плюс ударные/безударные варианты.
Ну и по реализации... мрак конечно. Сделайте хотя бы имя файла = код символа - будет меньше if'ов + sprintf. Уже не говорю про lower case... "Низкий уровень работы" Вас не спасет - это 100% :rolleyes:

А вообще Вам это зачем? Пользуйтесь SAPI - всё уже давно написано и уж точно более приемлемо, чем побуквенное воспроизведение...
42K
12 декабря 2009 года
ivan_kult
27 / / 12.12.2009
Спасибо. Критика реализации понятна, но это черновой вариант, без оформления и записи по слогам. Вопрос в том, как организовать беззапиночную обработку текста. Многопоточность или что-либо еще? Готовые варианты не устраивают тем, что этот вопрос мне интересен разработкой больше, чем результатом.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог