- speakerpy 0.1.2
- Навигация
- Ссылки проекта
- Статистика
- Метаданные
- Сопровождающие
- Классификаторы
- Описание проекта
- SpeakerPy
- Возможные сферы применения SpeakerPy
- Особенности и преимущества SpeakerPy
- Установка
- Системные требования
- Установка через pip
- Установка и запуск через Docker
- Использование CLI
- Lib Speak
- Пример использования функции speak
- Использование класса SeleroText
- Синтезируем русскую речь с помощью Python и сервиса Google
- Синтезируем русскую речь с помощью Python и сервиса Google
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 :
- Образование: SpeakerPy может использоваться для озвучивания учебных материалов, таких как лекции, статьи и книги, что поможет студентам и преподавателям легче воспринимать информацию и экономить время.
- Аудиокниги: SpeakerPy может быть использован для создания аудиокниг из текстовых документов, что облегчит доступ к литературе для людей с ограниченными возможностями и тех, кто предпочитает слушать, а не читать.
- Подкасты и радио: SpeakerPy можно использовать для создания подкастов и радиопередач на основе текстовых материалов, таких как новости, статьи или блоги.
- Доступность: SpeakerPy может быть полезным для разработки приложений и веб-сайтов с функцией Text-to-Speech, что позволит сделать контент доступным для людей с нарушениями зрения или другими ограниченными возможностями.
- Озвучивание видео: SpeakerPy можно использовать для автоматического озвучивания видеоматериалов, таких как презентации, обучающие видео или даже корпоративные ролики.
- Иностранные языки: SpeakerPy может быть использован для озвучивания текстов на иностранных языках, что поможет изучающим язык лучше понять произношение и интонацию.
- Навигационные системы: SpeakerPy можно применять в навигационных системах и голосовых помощниках для автоматического озвучивания маршрутов, инструкций и другой полезной информации.
- Техническая поддержка: SpeakerPy может быть интегрирован в системы технической поддержки для автоматического озвучивания ответов на часто задаваемые вопросы или инструкций по решению проблем.
- Маркетинг и реклама: SpeakerPy может быть использован для создания голосовых объявлений, промо-роликов и презентаций, что позволит сэкономить время и средства на озвучивание профессиональными дикторами.
- Медицина: SpeakerPy может применяться для озвучивания медицинских текстов, инструкций по применению лекарств или результатов диагностики, что упростит восприятие информации для пациентов и медицинских специалистов.
- Наука и исследования: SpeakerPy может использоваться для озвучивания научных статей, докладов и конференций, что облегчит доступ к информации для ученых и исследователей.
- Кастомизация голосовых ассистентов: SpeakerPy может быть использован для кастомизации голоса виртуальных ассистентов, таких как Siri, Google Assistant или Alexa, что позволит пользователям выбирать голосовые опции, которые им больше нравятся.
- Замена голоса: SpeakerPy может использоваться для смены голоса в существующих аудиозаписях, например для анонимизации подкастов или интервью.
- Текстовые редакторы: SpeakerPy может быть интегрирован в текстовые редакторы для предоставления функции Text-to-Speech, что поможет авторам и редакторам проверять свои тексты на ошибки и стилистические неточности.
Эти примеры лишь часть возможностей применения 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 мы заставим компьютер притвориться девушкой с томным голосом и почитать нам стихи Пушкина.
Непосредственно для синтеза речи понадобится:
- Представиться браузером Chrome
- Отправить GET запрос вида translate.google.com/translate_tts?tl=ru&q=текст
- Принять и сохранить ответ в 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 мы заставим компьютер притвориться девушкой с томным голосом и почитать нам стихи Пушкина.
Непосредственно для синтеза речи понадобится:
- Представиться браузером Chrome
- Отправить GET запрос вида translate.google.com/translate_tts?tl=ru&q=текст
- Принять и сохранить ответ в 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))
Результат можно скачать здесь (именно скачать, через встроенный на Я.Диске проигрыватель не воспроизводится). Несмотря на то, что в получившейся речи нередко встречаются неправильные ударения, в целом все звучит очень разборчиво и достойно, а иногда даже попадает в интонацию стиха (пусть это и всего лишь совпадения).
Перспективы у подобных технологий достаточно большие, несколько ссылок на тему:
- Статья на Хабре, из которой была взята идея с синтезом речи — «Умный дом» собственными руками
- Статья в Википедии по данной тематике