Прослушивание вывода веб-приложения - PullRequest
1 голос
/ 31 марта 2012

Я тщетно пытался создать программу, которая читает текст вслух, используя найденное веб-приложение здесь (http://www.ispeech.org/text.to.speech.demo.php). Это демонстрационная программа преобразования текста в речь, которая работает оченьхорошо, и это относительно быстро. Я пытаюсь сделать Python-программу, которая будет вводить текст в приложение, а затем выводить результат. Результат в этом случае будет надежным. Есть ли способ в Python сделатьэто, как, скажем, библиотека? А если нет, то можно ли это сделать любым другим способом? Я заглянул в iSpeech API (найдено здесь ), но единственная проблема с ним заключается в том, чтоколичество бесплатных пользователей ограничено (я считаю, что это 200). Хотя эта программа предназначена для использования только пару раз, я бы предпочел использовать ее более 200 раз. Кроме того, если эторешение нецелесообразно, кто-нибудь может направить меня к другой альтернативе?

@ AKX Я в настоящее время использую eSpeak, и он работает хорошо.и иногда трудно сказать, что говорится.

Ответы [ 3 ]

3 голосов
/ 31 марта 2012

Если использование iSpeech не требуется, есть приличное (оно, безусловно, не так красиво выражено, как во многих коммерческих решениях) с открытым исходным кодом для преобразования текста в речь, которое называется eSpeak .

Его можно использовать из командной строки (subprocess с Python) или в виде общей библиотеки. Кажется, есть еще оболочка Python (python-espeak) .

Надеюсь, это поможет.

2 голосов
/ 03 апреля 2012

OK.Я нашел способ сделать это, кажется, работает нормально.Спасибо всем, кто помог!Вот код, который я использую:

from urllib import quote_plus

def speak(text): 
    import pydshow 
    words = text.split() 
    temp = [] 
    stuff = [] 
    while words: 
        temp.append(words.pop(0)) 
        if len(temp) == 24: 
            stuff.append(' '.join(temp)) 
            temp = [] 
    stuff.append(' '.join(temp)) 
    for i in stuff: 
        pydshow.PlayFileWait('http://api.ispeech.org/api/rest?apikey=8d1e2e5d3909929860aede288d6b974e&format=mp3&action=convert&voice=ukenglishmale&text='+quote_plus(i))

if __name__ == '__main__':
       speak('Hello. This is a text-to speech test.')

Я считаю этот идеал, потому что он использует API, но он использует ключ API, который используется для демонстрационной программы.Поэтому оно никогда не заканчивается.Ключ 8d1e2e5d3909929860aede288d6b974e.

Вы можете проверить это на работе без программы, введя в адресную строку следующее:

http://api.ispeech.org/api/rest?apikey=8d1e2e5d3909929860aede288d6b974e&format=mp3&action=convert&voice=ukenglishmale&text=

После текста, который вы хотите произнести,Вы также можете настроить язык, изменив в этом случае ukenglishmale на что-то еще, что предлагает iSpeech.Например, ukenglishfemale.Это произнесет тот же текст, но женским голосом.

ПРИМЕЧАНИЕ: Pydshow - моя оболочка для DirectShow.Вместо этого вы можете использовать свой.

1 голос
/ 31 марта 2012

Поток вашего приложения будет выглядеть так:

  1. На стороне клиента: пользователь вводит текст в форму, а форма отправляет запрос на сервер
  2. Сервер: может быть на python или на любом другом языке / фреймворке. Получает http-запрос с текстом.
  3. Сервер: запускает преобразование текста в речь либо с использованием чистой библиотеки Python, либо путем запуска подпроцесса для утилиты, которая может генерировать речь в формате wav / mp3 / aiff / etc
  4. Сервер: отправляет ответ HTTP обратно потоковым файлом с типом mime клиенту
  5. Клиент: получает ответ http и воспроизводит содержимое

В частности, о шаге 3 ...

У меня нет конкретных советов по поводу наиболее понятного программного обеспечения для синтеза речи с открытым исходным кодом, но я могу сказать, что это не обязательно должен быть чистый python или даже вообще python. Большинство из этих пакетов имеют некоторую форму утилиты командной строки, которая берет stdin или файл и создает аудиофайл в качестве вывода. Вы просто запустите эту утилиту в качестве подпроцесса для генерации файла и затем вернете файл обратно в ответ http.

Если вы решите использовать существующий веб-сервис, обеспечивающий преобразование текста в речь через API (iSpeech), то шаг 3 будет заменен на отправку вашего собственного http-запроса на стороне сервера в iSpeech с получением ответа и в значительной степени переадресация этого ответа обратно на исходный клиентский запрос, как прокси. Я бы сказал, что выгода заключается не в том, чтобы поддерживать собственное решение для синтеза речи или получать лучшее качество, которое вы могли бы получить из открытого источника ... но недостатком является то, что у вас, вероятно, будет больше задержка во времени отклика, поскольку ваш сервер имеет сделать свой собственный внешний http-запрос и сначала загрузить данные.

...