Синтез русской речи python

speakerpy 0.1.2

`SpeakerPy` — это Python-библиотека для синтеза речи, основанная на моделях Silero Text-to-Speech.

Ссылки проекта

Статистика

Метаданные

Метки синтез речи, text-to-speech, озвучивание текста, python, Silero, TTS, аудио, голос, синтезатор голоса, чтение текста, оффлайн TTS, мультиязычный TTS, преобразование текста в речь, генерация речи, аудиокниги

Требует: Python >=3.10,

Сопровождающие

Классификаторы

Описание проекта

SpeakerPy

SpeakerPy — это Python-библиотека для синтеза речи, основанная на моделях Silero Text-to-Speech.

Возможные сферы применения SpeakerPy

SpeakerPy предлагает ряд возможностей для синтеза речи, что делает его полезным инструментом для различных задач и сфер деятельности. Ниже приведены некоторые примеры областей, где может быть использовано приложение SpeakerPy :

  1. Образование: SpeakerPy может использоваться для озвучивания учебных материалов, таких как лекции, статьи и книги, что поможет студентам и преподавателям легче воспринимать информацию и экономить время.
  2. Аудиокниги: SpeakerPy может быть использован для создания аудиокниг из текстовых документов, что облегчит доступ к литературе для людей с ограниченными возможностями и тех, кто предпочитает слушать, а не читать.
  3. Подкасты и радио: SpeakerPy можно использовать для создания подкастов и радиопередач на основе текстовых материалов, таких как новости, статьи или блоги.
  4. Доступность: SpeakerPy может быть полезным для разработки приложений и веб-сайтов с функцией Text-to-Speech, что позволит сделать контент доступным для людей с нарушениями зрения или другими ограниченными возможностями.
  5. Озвучивание видео: SpeakerPy можно использовать для автоматического озвучивания видеоматериалов, таких как презентации, обучающие видео или даже корпоративные ролики.
  6. Иностранные языки: SpeakerPy может быть использован для озвучивания текстов на иностранных языках, что поможет изучающим язык лучше понять произношение и интонацию.
  7. Навигационные системы: SpeakerPy можно применять в навигационных системах и голосовых помощниках для автоматического озвучивания маршрутов, инструкций и другой полезной информации.
  8. Техническая поддержка: SpeakerPy может быть интегрирован в системы технической поддержки для автоматического озвучивания ответов на часто задаваемые вопросы или инструкций по решению проблем.
  9. Маркетинг и реклама: SpeakerPy может быть использован для создания голосовых объявлений, промо-роликов и презентаций, что позволит сэкономить время и средства на озвучивание профессиональными дикторами.
  10. Медицина: SpeakerPy может применяться для озвучивания медицинских текстов, инструкций по применению лекарств или результатов диагностики, что упростит восприятие информации для пациентов и медицинских специалистов.
  11. Наука и исследования: SpeakerPy может использоваться для озвучивания научных статей, докладов и конференций, что облегчит доступ к информации для ученых и исследователей.
  12. Кастомизация голосовых ассистентов: SpeakerPy может быть использован для кастомизации голоса виртуальных ассистентов, таких как Siri, Google Assistant или Alexa, что позволит пользователям выбирать голосовые опции, которые им больше нравятся.
  13. Замена голоса: SpeakerPy может использоваться для смены голоса в существующих аудиозаписях, например для анонимизации подкастов или интервью.
  14. Текстовые редакторы: SpeakerPy может быть интегрирован в текстовые редакторы для предоставления функции Text-to-Speech, что поможет авторам и редакторам проверять свои тексты на ошибки и стилистические неточности.
Читайте также:  Программа для квадратного уравнения python

Эти примеры лишь часть возможностей применения SpeakerPy. Благодаря своей гибкости и мощным функциям, SpeakerPy может быть адаптирован для использования в самых разнообразных сферах и отраслях, где требуется синтезировать речь из текста. От маркетинга и рекламы до медицины и науки, SpeakerPy может стать полезным инструментом для разработчиков, специалистов по контенту и конечных пользователей.

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

Особенности и преимущества SpeakerPy

  • Транскрипция чисел и английских слов: SpeakerPy способен озвучивать числа и английские слова через транскрипцию.
  • Синтез больших объемов текста: SpeakerPy может синтезировать большие объемы текста без проблем.
  • Корректное деление текста на куски: благодаря использованию библиотеки nltk, SpeakerPy корректно делит большие тексты на предложения.
  • Кеширование синтезированного текста: SpeakerPy синтезирует и хранит текст по кускам, что позволяет кешировать уже ранее синтезированный текст и избежать повторного синтезирования.
  • Работа в автономном режиме: SpeakerPy синтезирует звук локально, без подключения к интернету, что позволяет использовать его в автономном режиме.
  • Сохранение синтезированного текста в MP3: SpeakerPy предоставляет возможность сохранять синтезированный текст в формате MP3.

Установка

Системные требования

Установка через pip

SpeakerPy можно установить с помощью pip:

Установка и запуск через Docker

docker pull xable/speakerpy

Использование CLI

╰─➤ python -m speakerpy --help usage: __main__.py  -l  -f FILE -t   SAMPLE_RATE  SPEED  NAME_TEXT  AUDIO_DIR SpeakerPy: CLI для синтеза речи с использованием SpeakerPy 🎙️ options:  -h, --help show this  message and  -l  --language   Язык синтеза   en -f FILE, --file FILE Путь к файлу с текстом для озвучивания  -t  --type_out  Каким образом вывести синтезированный текст   speak -sr SAMPLE_RATE, --sample_rate SAMPLE_RATE  Частота дискретизации  умолчанию:  -s SPEED, --speed SPEED  Скорость чтения  умолчанию:  -n NAME_TEXT, --name_text NAME_TEXT  Имя для текста, с таким именем сохранится итоговый mp3 файл  умолчанию: имя файла с текстом -a AUDIO_DIR, --audio_dir AUDIO_DIR  Папка для сохранения готовых аудио файлов  умолчанию: текущая папка использования:  python -m speakerpy -l ru -t speak -f ./books/example.txt python -m speakerpy -l ru -t mp3 -f ./books/example.txt python -m speakerpy -l en -t speak -f ./books/example.txt python -m speakerpy -l en -t mp3 -f ./books/example.txt

Проект состоит из двух основных компонентов: Lib Speak и Lib SL Text.

Lib Speak

Lib Speak включает классы Speaker и SpeakerBase для синтеза речи с использованием моделей Silero. Основные методы класса Speaker :

Пример использования функции speak

Lib SL Text содержит класс SeleroText для обработки текста перед синтезом речи. Основной метод класса SeleroText :

Использование класса SeleroText

Разделение текста на куски с помощью метода chunk() :

Источник

Синтезируем русскую речь с помощью Python и сервиса Google

Не секрет, что у Google есть проекты в области синтеза и распознавания речи. С помощью одного из них, и простого скрипта на Python мы заставим компьютер притвориться девушкой с томным голосом и почитать нам стихи Пушкина.

Непосредственно для синтеза речи понадобится:
  1. Представиться браузером Chrome
  2. Отправить GET запрос вида translate.google.com/translate_tts?tl=ru&q=текст
  3. Принять и сохранить ответ в mp3
 def sintez(word,filepath): sintez_word = urllib.quote(word) g = Grab() g.setup(user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/12.04 Chromium/18.0.1025.151 Chrome/18.0.1025.151 Safari/535.19") g.go('http://translate.google.com/translate_tts?tl=ru&q='+sintez_word) f = open(filepath,'wb') f.write(g.response.body) f.close() return True

В этой функции мы реализуем описанный выше план по использованию сервиса и записываем результат в файл.
Сервис не поддерживает длинный текст (по моим прикидкам, максимально допустимое значение в пределах 150-250 символов), поэтому необходимо будет склеить результирующий файл из нескольких мелких.
Этим займется следующая функция:

def join_file(filenames,result_filepath): output = open(result_filepath,'wb') for filename in filenames: fileobj = open(filename,'rb') filebytes = fileobj.read() output.write(filebytes) fileobj.close() output.close() 

Применение очевидно: на вход передается список путей имен файлов, из которых будем собирать результирующий, и путь к результирующему файлу.
Тело скрипта:

 #coding: utf-8 from grab import Grab import urllib import os tmp_filepath = 'tmp.mp3' text_filepath = "text.txt" result_filepath = 'result.mp3' text = open(text_filepath) number_of_file=0 namelist = [] for line in text.readlines(): current_string = line.strip() number_of_file += 1 current_filepath = str(number_of_file)+tmp_filepath namelist.append(current_filepath) sintez(current_string,current_filepath) join_file(namelist,result_filepath) current_dir = os.path.abspath(os.curdir) delete_files(namelist,current_dir) 

Определяем пути к нашим файлам (путь для временных mp3 с кусочками итогового текста в синтезированном виде, путь к исходному тексту, путь к результирующему файлу).

Пропускаем каждую строку исходного текста (у меня там отрывок из стихотворения Пушкина) через синтез. Строки должны быть не длиннее ~150-200 символов.

Объединяем все это в один файл, и подчищаем за собой временные части.

 def delete_files(filenames,directory): for filename in filenames: os.remove(os.path.join(directory,filename)) 

Результат можно скачать здесь (именно скачать, через встроенный на Я.Диске проигрыватель не воспроизводится). Несмотря на то, что в получившейся речи нередко встречаются неправильные ударения, в целом все звучит очень разборчиво и достойно, а иногда даже попадает в интонацию стиха (пусть это и всего лишь совпадения).

Перспективы у подобных технологий достаточно большие, несколько ссылок на тему:
  • Статья на Хабре, из которой была взята идея с синтезом речи — «Умный дом» собственными руками
  • Статья в Википедии по данной тематике

Источник

Синтезируем русскую речь с помощью Python и сервиса Google

Не секрет, что у Google есть проекты в области синтеза и распознавания речи. С помощью одного из них, и простого скрипта на Python мы заставим компьютер притвориться девушкой с томным голосом и почитать нам стихи Пушкина.

Непосредственно для синтеза речи понадобится:
  1. Представиться браузером Chrome
  2. Отправить GET запрос вида translate.google.com/translate_tts?tl=ru&q=текст
  3. Принять и сохранить ответ в mp3
 def sintez(word,filepath): sintez_word = urllib.quote(word) g = Grab() g.setup(user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/12.04 Chromium/18.0.1025.151 Chrome/18.0.1025.151 Safari/535.19") g.go('http://translate.google.com/translate_tts?tl=ru&q='+sintez_word) f = open(filepath,'wb') f.write(g.response.body) f.close() return True

В этой функции мы реализуем описанный выше план по использованию сервиса и записываем результат в файл.
Сервис не поддерживает длинный текст (по моим прикидкам, максимально допустимое значение в пределах 150-250 символов), поэтому необходимо будет склеить результирующий файл из нескольких мелких.
Этим займется следующая функция:

def join_file(filenames,result_filepath): output = open(result_filepath,'wb') for filename in filenames: fileobj = open(filename,'rb') filebytes = fileobj.read() output.write(filebytes) fileobj.close() output.close() 

Применение очевидно: на вход передается список путей имен файлов, из которых будем собирать результирующий, и путь к результирующему файлу.
Тело скрипта:

 #coding: utf-8 from grab import Grab import urllib import os tmp_filepath = 'tmp.mp3' text_filepath = "text.txt" result_filepath = 'result.mp3' text = open(text_filepath) number_of_file=0 namelist = [] for line in text.readlines(): current_string = line.strip() number_of_file += 1 current_filepath = str(number_of_file)+tmp_filepath namelist.append(current_filepath) sintez(current_string,current_filepath) join_file(namelist,result_filepath) current_dir = os.path.abspath(os.curdir) delete_files(namelist,current_dir) 

Определяем пути к нашим файлам (путь для временных mp3 с кусочками итогового текста в синтезированном виде, путь к исходному тексту, путь к результирующему файлу).

Пропускаем каждую строку исходного текста (у меня там отрывок из стихотворения Пушкина) через синтез. Строки должны быть не длиннее ~150-200 символов.

Объединяем все это в один файл, и подчищаем за собой временные части.

 def delete_files(filenames,directory): for filename in filenames: os.remove(os.path.join(directory,filename)) 

Результат можно скачать здесь (именно скачать, через встроенный на Я.Диске проигрыватель не воспроизводится). Несмотря на то, что в получившейся речи нередко встречаются неправильные ударения, в целом все звучит очень разборчиво и достойно, а иногда даже попадает в интонацию стиха (пусть это и всего лишь совпадения).

Перспективы у подобных технологий достаточно большие, несколько ссылок на тему:
  • Статья на Хабре, из которой была взята идея с синтезом речи — «Умный дом» собственными руками
  • Статья в Википедии по данной тематике

Источник

Оцените статью