Это вопрос, на который я потратил почти семестр в колледже, изучая ответ, и год (или больше) уроков, чтобы изучить основную обработку сигналов, необходимую для понимания процесса. Целые занятия посвящены синтезу речи, а целые учебные программы - обработке сигналов.
Можно рассматривать человеческий голосовой тракт как фильтр, а голосовую щель - как генератор импульсов, то есть речь фактически является результатом импульсной последовательности, отфильтрованной голосовым трактом, ртом и носовой полостью.
Для каждой фонемы «фильтр» будет разным, поэтому для создания «фильтров» вам понадобится библиотека фонем. Теоретически, обратная фильтрация может быть использована в библиотеке фонемных звуковых клипов, чтобы найти коэффициенты «фильтрации». Рекурсия Левинсона-Дурбина часто используется для нахождения коэффициентов LPC.
Должна быть создана серия глоттальных импульсов. Простой способ сделать это состоит в том, чтобы свести последовательность импульсов с положительной полусинусоидальной волной.
Наконец, отфильтруйте последовательность голосовых импульсов с помощью коэффициентов «фильтра», связанных с фонемой, которую вы хотите создать.
Но это только для голосовой речи. Для генерации невокализованной речи простое решение состоит в том, чтобы фильтровать сигнал случайного шума с помощью коэффициентов «фильтра», связанных с фонемами невокализованной речи.
Один уровень абстракции выше, создайте список необходимых фонем и объедините. Просто как пирог!
UPDATE:
Друг указал Фестивалю, «черный ящик» для ввода текста и вывода речи: http://festvox.org/festival/