Хороший бесплатный API для преобразования текста в речь - PullRequest
8 голосов
/ 10 июня 2009

Я пишу приложение для написания слова для моего сына и хотел бы получить рекомендации по хорошим API, которые можно понять, когда он говорит. Я программирую на .Net, так что кое-что, что будет взаимодействовать с этим, было бы удобно. Заранее спасибо.

Ответы [ 2 ]

10 голосов
/ 10 июня 2009

MS Speech SDK . Он предоставляется через сборку .NET. Очень прост в использовании. Моим детям это понравилось. Бесплатно.

using System.Speech.Synthesis;

public class SpeakHelloWorld
{
  public static void Main(string[] args)
  {
      SpeechSynthesizer synthesizer = new SpeechSynthesizer();
      synthesizer.Speak("As for me and my house, ...");
  }
}

Звуки, генерируемые приведенным выше кодом, не используют естественное перегибание с паузами и так далее. Таким образом, с полным предложением, это не выходит звучащим человеком. Но отдельные слова звучат нормально, просто как робот.

Для маленького ребенка с достаточно маленьким набором слов вы можете просто записать свой собственный голос, произносящий слова. Я сделал это с помощью загадки штата США, чтобы произносить названия штатов, а не прибегать к синтезатору.

4 голосов
/ 10 июня 2009

Не знаю, почему я не подумал об этом до -
Я делал инструмент поиска по словарю и хотел добавить к нему произношение. Вместо того, чтобы использовать преобразование текста в речь, которое дает роботизированный звук, я выбрал другой подход. M-W.com имеет человеческие голоса, записанные в файлах .wav для большинства слов. Поэтому я делаю скрининг на веб-сайте Merriam-Webster, чтобы получить wav-файл для слова, а затем просто играю , что . Если ваше приложение будет подключено, то, возможно, это будет работать и для вас.

Это поток, через который он проходит:

pronouncing Tricky...looking up 'Tricky'...
dictionary page: http://www.merriam-webster.com/dictionary/Tricky
got dictionary page markup, 35828 chars...
getting pronunciation uri...
got uri: 'http://www.merriam-webster.com//cgi-bin/audio.pl?tricky01.wav=tricky'...
getting page markup...
got pronunciation page markup, 3498 chars...
getting wav uri...
got wav uri: 'http://media.merriam-webster.com/soundc11/t/tricky01.wav'...
getting wav data...
got wav data, 6260 bytes...
playing wav data.
done.

Вот некоторый исходный код прототипа, который делает это .

Это работает на .NET Framework 2.0, а также на .NET CF 2.0. Это просто иллюстрация. Это своего рода наивный выбор правильного .wav-файла, когда есть несколько форм слова и несколько произношений. Если вы попросите форму множественного числа, вы можете ее не получить. Также вы можете добавить кеширование и дополнительную обработку исключений, чтобы укрепить его.

...