- Попробовал 6 сервисов и Python-библиотек text-to-speech (TTS), делюсь результатами
- pyttsx3 2.90
- Навигация
- Ссылки проекта
- Статистика
- Метаданные
- Сопровождающие
- Классификаторы
- Описание проекта
- Подробности проекта
- Ссылки проекта
- Статистика
- Метаданные
- Сопровождающие
- Классификаторы
- Как преобразовать текст в речь в Python
- Установка gTTS API
- Список доступных языков
- Автономный API
Попробовал 6 сервисов и Python-библиотек text-to-speech (TTS), делюсь результатами
Библиотеки и сервисы, которые переводят текст в человеческую (text-to-speech или TTS), не новшество. Они уже 5-6-7 лет довольно популярны, а многие блогеры на YouTube используют смешной машинный голос как озвучку для своих роликов. Однако с последним хайпом на ИИ все больше и больше стартапов получает инвестиции на развитие, соответственно, новые сервисы вырастают как грибы после дождя.
Для своего пет-проекта по генерации контента я решил попробовать запустить автоматические релизы подкастов в Apple, Amazon, Spotify, Google Podcasts. Для этого мне пришлось повозиться с разными библиотеками озвучки (работаю с Python) и готовыми сервисами. Далее в этой статье я напишу короткие рецензии на некоторые из них. Рецензию я написал именно на эти сервисы и библиотеки, потому они быстрее всего гуглились. За рекламу этих сервисов и библиотек мне не платили, так что я постараюсь дать максимально беспристрастный отзыв.
Вообще непонятно о чем обзор)
1. какие критерии отбора в этот шортлист?
2. какой язык?
3. где silero? Nemo? Какие-нибудь платные от Яндекса и даже Тинькофф или Speechify?
4. а если уж хорошо отбирать, то есть еще опция еще самому потренить Flowtron/Fastspeech/Tacotron, но да, это сильно опционально)
5. насколько я знаю, уже половина ютуба автоматизирована, по крайней мере в шортсах одни и те же голоса. Что за сервис их генерит? Вот это было бы полезно узнать)
6. что вообще сравниваем-то?)
спасибо за отзыв! буду учиться писать лучше.
1. я просто погуглил какое-то время и попробовал их в действии. пробовал те, кто были на первых местах в гугле по «text-to-speech python»
2. хорошее замечание, добавил в статью. это Python
3. Яндекс, Тинькофф, silero, Nemo мне не попались, когда я гуглил. Speechify знаю, не успел попробовать. Посмотрю их, спасибо за дополнение.
4. это скорее статья для чайников-новичков, а не дип лернинг специалистов.
5. можете прислать пример?
6. добавил таблицу — быстрый вывод по критериям в начале статьи. вы правы, надо было сделать этот вывод более явным.
PS вообще было бы очень клево почитать хороший обзор по автоматической генерации контента. Прям люто ратую) удачи в этом деле)
я думаю рассказать про свой проект по генерации контента в телеграмме и подкастах. только немного еще данных подсоберу, чтобы было интереснее 🙂
1. из python можно вызывать любое API, если что) необязательно именно на нем зацикливаться
2. я имел в виду русский/английский/etc., от языка речи очень много чего зависит. Например, русских речевых корпусов, готовых к обучению, не так много по сравнению с английскими, а следовательно качество будет хуже
5. вот такого барахла полно на ютубе. Просто полистал чуток шортсы и сразу нашел. Ролики с этим голосом 100% автоматически создаются: https://youtube.com/shorts/y1ZJXv9jGIA?feature=share
Вообще автоматизация ютуба сейчас очень актуальная тема, которая несколько месяцев особо развивается за счет AI прогресса. Просто несколько продуктов на эту же тему:
1. https://vidiq.com/ (вроде эксплорят идею полного цикла создания видео, но не знаю)
2. https://pictory.ai/pictory-features/script-to-video (тут прям полный цикл создания + есть свои TTS voiceover’ы, которые звучат сносно)
3. https://submagic.co/ (прикольные субтитры, которые все видят в шортсах/рилсах/тиктоках и т.д.)
Из TTS еще вспомнил IBM Watson, кстати
1. да я понимаю, что можно любое API из питона вызывать. просто я еще и библиотеки искал. наверное правильнее было написать, что я искал по двум запросам «text-to-speech api» & «text-to-speech python»
2. я искал английский. опять же, хорошее уточнение, добавлю в статью.
5. спасибо изучу! очень круто, что вы написали так подробно.
еще раз очень благодарю за такую подробную обратную связь. первый блин комом, но я буду улучшаться! 🙂
Очень полезно, спасибо, Александр!
pyttsx3 2.90
Text to Speech (TTS) library for Python 2 and 3. Works without internet connection or delay. Supports multiple TTS engines, including Sapi5, nsss, and espeak.
Навигация
Ссылки проекта
Статистика
Метаданные
Лицензия: GNU General Public License v3 (GPLv3)
Метки pyttsx, ivona, pyttsx for python3, TTS for python3, pyttsx3, text to speech for python, tts, text to speech, speech, speech synthesis, offline text to speech, offline tts, gtts
Сопровождающие
Классификаторы
- Intended Audience
- Developers
- End Users/Desktop
- Information Technology
- System Administrators
- OSI Approved :: GNU General Public License v3 (GPLv3)
- MacOS :: MacOS X
- Microsoft :: Windows
- POSIX
- Python :: 3
- Python :: 3.5
- Python :: 3.6
- Python :: 3.7
Описание проекта
*****************************************************
pyttsx3 (offline TTS for Python 3)
*****************************************************«pyttsx3« is a text-to-speech conversion library in Python. Unlike alternative libraries, it works offline, and is compatible with both Python 2 and 3.
Installation
************
::pip install pyttsx3
If you recieve errors such as «No module named win32com.client«, «No module named win32«, or «No module named win32api«, you will need to additionally install «pypiwin32«.
Usage :
************
::import pyttsx3
engine = pyttsx3.init()
engine.say(«I will speak this text»)
engine.runAndWait()**Changing Voice , Rate and Volume :**
::
import pyttsx3
engine = pyttsx3.init() # object creation«»» RATE»»»
rate = engine.getProperty(‘rate’) # getting details of current speaking rate
print (rate) #printing current voice rate
engine.setProperty(‘rate’, 125) # setting up new voice rate«»»VOLUME»»»
volume = engine.getProperty(‘volume’) #getting to know current volume level (min=0 and max=1)
print (volume) #printing current volume level
engine.setProperty(‘volume’,1.0) # setting up volume level between 0 and 1«»»VOICE»»»
voices = engine.getProperty(‘voices’) #getting details of current voice
#engine.setProperty(‘voice’, voices[0].id) #changing index, changes voices. o for male
engine.setProperty(‘voice’, voices[1].id) #changing index, changes voices. 1 for femaleengine.say(«Hello World!»)
engine.say(‘My current speaking rate is ‘ + str(rate))
engine.runAndWait()
engine.stop()«»»Saving Voice to a file»»»
# On linux make sure that ‘espeak’ and ‘ffmpeg’ are installed
engine.save_to_file(‘Hello World’, ‘test.mp3’)
engine.runAndWait()**Full documentation of the Library**
#####################################https://pyttsx3.readthedocs.io/en/latest/
Included TTS engines:
*********************
* sapi5
* nsss
* espeakFeel free to wrap another text-to-speech engine for use with «pyttsx3«.
Project Links:
*************** PyPI (https://pypi.python.org)
* GitHub (https://github.com/nateshmbhat/pyttsx3)
* Full Documentation (https://pyttsx3.readthedocs.org)Подробности проекта
Ссылки проекта
Статистика
Метаданные
Лицензия: GNU General Public License v3 (GPLv3)
Метки pyttsx, ivona, pyttsx for python3, TTS for python3, pyttsx3, text to speech for python, tts, text to speech, speech, speech synthesis, offline text to speech, offline tts, gtts
Сопровождающие
Классификаторы
- Intended Audience
- Developers
- End Users/Desktop
- Information Technology
- System Administrators
- OSI Approved :: GNU General Public License v3 (GPLv3)
- MacOS :: MacOS X
- Microsoft :: Windows
- POSIX
- Python :: 3
- Python :: 3.5
- Python :: 3.6
- Python :: 3.7
Как преобразовать текст в речь в Python
На этом уроке разберем, как преобразовать текст в человеческую речь. Иногда мы предпочитаем слушать содержание, а не читать. Мы можем выполнять несколько задач одновременно, слушая важные данные файла. Python предоставляет множество API для преобразования текста в речь. Google Text to Speech API популярен и широко известен как gTTS API.
Инструмент очень прост в использовании и предоставляет множество встроенных функций, которые используются для сохранения текстового файла в формате mp3.
Нам не нужно использовать нейронную сеть и обучать модель, поскольку этого сложно добиться. Вместо этого мы будем использовать API для выполнения задачи.
API gTTS предоставляет возможность конвертировать текстовые файлы на разные языки, такие как английский, хинди, немецкий, тамильский, французский и многие другие. Мы также можем воспроизводить звуковую речь в быстром или медленном режиме.
Однако в последнем обновлении мы не можем изменить речевой файл; он будет генерироваться системой и не подлежит изменению.
Чтобы совершать преобразование в текстовых файлах, мы будем использовать другую автономную библиотеку под названием pyttsx3.
Установка gTTS API
Введите следующую команду в терминале, чтобы установить gTTS API.
Затем установите дополнительный модуль для работы с gTTS.
Давайте разберемся в работе gTTS API
import gtts from playsound import playsound
Как мы видим, им очень легко пользоваться; нам нужно импортировать его и передать объект gTTS, который является интерфейсом API переводчика Google.
# make a request to google to get synthesis t1 = gtts.gTTS("Welcome to javaTpoint")
В приведенной выше строке мы отправили данные в текстовом виде и получили фактическую звуковую речь. Теперь сохраните этот аудиофайл как welcome.mp3.
# save the audio file t1.save("welcome.mp3")
Он сохранится в каталоге, мы можем прослушать этот файл следующим образом:
# play the audio file playsound("welcome.mp3")
Включите системную громкость, слушайте текст, как мы сохранили его ранее.
Теперь мы определим полную программу для преобразования текста в речь в Python.
# Import the gTTS module for text # to speech conversion from gtts import gTTS # This module is imported so that we can # play the converted audio from playsound import playsound # It is a text value that we want to convert to audio text_val = 'All the best for your exam.' # Here are converting in English Language language = 'en' # Passing the text and language to the engine, # here we have assign slow=False. Which denotes # the module that the transformed audio should # have a high speed obj = gTTS(text=text_val, lang=language, slow=False) #Here we are saving the transformed audio in a mp3 file named # exam.mp3 obj.save("exam.mp3") # Play the exam.mp3 file playsound("exam.mp3")
В приведенном выше коде мы импортировали API и используем функцию gTTS. Функция gTTS() принимает три аргумента:
- Первый аргумент – это текстовое значение, которое мы хотим преобразовать в речь.
- Второй – указанный язык. Он поддерживает множество языков. Мы можем преобразовать текст в аудиофайл.
- Третий аргумент представляет скорость речи. Мы передали значение slow как false; это означает, что речь будет идти с нормальной скоростью.
Мы сохранили этот файл как exc.py, который может быть доступен в любое время, а затем использовали функцию playsound() для прослушивания аудиофайла во время выполнения.
Список доступных языков
Чтобы получить доступные языки, используйте следующие функции –
Мы упомянули несколько важных языков и их код. В этой библиотеке можно найти почти все языки.
Автономный API
Мы использовали Google API, но если мы хотим преобразовать текст в речь в автономном режиме, Python предоставляет библиотеку pyttsx3, которая ищет движки TTS, предустановленные на нашей платформе.
Давайте разберемся, как пользоваться библиотекой pyttsx3:
import pyttsx3 # initialize Text-to-speech engine engine = pyttsx3.init() # convert this text to speech text = "Python is a great programming language" engine.say(text) # play the speech engine.runAndWait()
В приведенном выше коде мы использовали метод say() и передали текст в качестве аргумента. Он используется для добавления слова для разговора в очередь, в то время как метод runAndWait() запускает реальный цикл событий до тех пор, пока все команды не будут помещены в очередь.
Метод также предоставляет некоторые дополнительные свойства, которые мы можем использовать в соответствии с нашими потребностями. Давайте узнаем подробности о скорости речи:
# get details of speaking rate rate = engine.getProperty("rate") print(rate)
We can change rate of speed as we want: # setting new voice rate (faster) engine.setProperty("rate", 300) engine.say(text) engine.runAndWait()
Если мы пройдем 100, это будет медленнее.
engine.setProperty("rate", 100) engine.say(text) engine.runAndWait()
Теперь мы можем слышать текстовый файл в голосах.
# get details of all voices available voices = engine.getProperty("voices") print(voices)
Мы обсудили преобразование текстового файла в речь с помощью сторонней библиотеки а также автономную библиотеку. Используя эти методы, мы можем создать собственного виртуального голосового ассистента.