Python TTS package using Silero models for Russian language
Project description
ven-speaker-py
Форк библиотеки speakerpy с модификациями и улучшениями для потоковой работы с аудио и TTS.
🔹 Описание
ven-speaker-py — это Python-библиотека для синтеза речи с модификациями:
- Потоковая передача аудио в байтовом виде.
- Исправленная функция
to_mp3->to_wav. - Поддержка гибкой настройки скорости, громкости и sample rate.
- Постепенно добавляются новые функции и улучшения под конкретные задачи.
Библиотека подходит для создания голосовых приложений, озвучивания текста в реальном времени и интеграции с другими проектами.
Особенности и преимущества SpeakerPy
- Транскрипция чисел и английских слов: SpeakerPy способен озвучивать числа и английские слова через транскрипцию.
- Синтез больших объемов текста: SpeakerPy может синтезировать большие объемы текста без проблем.
- Корректное деление текста на куски: благодаря использованию библиотеки nltk, SpeakerPy корректно делит большие тексты на предложения.
- Кеширование синтезированного текста: SpeakerPy синтезирует и хранит текст по кускам, что позволяет кешировать уже ранее синтезированный текст и избежать повторного синтезирования. После первой генерации все последующие обычно занимают менее четверти секунды (имеется в виду не полная генерация, а момент, когда начинает зачитываться речь) на обычном процессоре!
- Работа в автономном режиме: SpeakerPy синтезирует звук локально, без подключения к интернету, что позволяет использовать его в автономном режиме.
- Сохранение синтезированного текста в MP3: SpeakerPy предоставляет возможность сохранять синтезированный текст в формате MP3.
⚙️ Установка через pip
ven-speaker-py можно установить с помощью pip:
pip install venspeakerpy
🛠️ Основные возможности
- Преобразование текста в речь.
- Потоковая генерация аудио чанков.
- Поддержка сохранения в различные форматы, включая mp3.
- Настройка скорости, громкости и sample rate.
- Интеграция в голосовые боты и приложения реального времени.
🚀 Системные требования
- 2 ГБ ОЗУ
- Наличие процессора :D
💡 Основные компоненты
Проект состоит из двух основных компонентов: Lib Speak и Lib SL Text.
Lib Speak
Lib Speak включает классы Speaker и SpeakerBase для синтеза речи с использованием моделей Silero. Основные методы класса Speaker:
speak:произнесение текста.Теперь это потоковая передача звука в байтах, что позволяет использовать звук где-то еще (например, для трансляции в Discord)to_wav: конвертация текста в аудиофайл wav.
📄 Пример использования функции speak
from lib_speak import Speaker
from lib_sl_text import SeleroText
import sounddevice as sd
import queue
import threading
import numpy as np
speaker = Speaker(model_id="ru_v3", language="ru", speaker="baya", device="cpu")
def text_to_speech(txt: str):
audio_queue = queue.Queue()
def audio_player():
with sd.OutputStream(samplerate=48000, channels=1, dtype='float32') as stream:
while True:
speech_chunk = audio_queue.get()
if speech_chunk is None:
break
audio_array = np.frombuffer(speech_chunk, dtype=np.float32)
stream.write(audio_array)
player_thread = threading.Thread(target=audio_player, daemon=True)
player_thread.start()
for chunk, text in speaker.speak(text=text.text, sample_rate=48000, speed=1.1, volume=0.7):
audio_queue.put(chunk)
audio_queue.put(None)
player_thread.join()
text = SeleroText("Пример текста для синтеза речи")
text_to_speech(text)
#p.s. я не проверял этот код, просто куски из своего проекта сюда напихал в надежде, что у вас заработает, так что удачи.
Пример использования функции to_wav
from lib_speak import Speaker
text = SeleroText("Пример текста для синтеза речи")
speaker = Speaker(model_id="ru_v3", language="ru", speaker="aidar", device="cpu")
speaker.to_wav(text=text.text, sample_rate=48000, speed=1.0, volume=1.0, name_text='output', audio_dir='output')
Lib SL Text
Lib SL Text содержит класс SeleroText для обработки текста перед синтезом речи. Основной метод класса SeleroText:
chunk: разделение текста на блоки.
Использование класса SeleroText
text = SeleroText("Привет, мир!", to_language="ru")
Разделение текста на куски с помощью метода chunk():
for chunk in text.chunk():
print(chunk)
Ресурсы и ссылки
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file venspeakerpy-0.1.1.tar.gz.
File metadata
- Download URL: venspeakerpy-0.1.1.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3ccafc4c186bfb53ab40a50a8ae96901a1e9ee8b8fd0b0d0a3928b10cb7af85
|
|
| MD5 |
24496161b3fe30a99a6519aa1d28a59f
|
|
| BLAKE2b-256 |
92e1b97f18167dfd9de63a471d496d0b2f92fab51ba8d23dd09fa4452f8ee6c1
|
File details
Details for the file venspeakerpy-0.1.1-py3-none-any.whl.
File metadata
- Download URL: venspeakerpy-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64a85dd7d89d4aea390e3654f531c4a2f3df09b51a524530e710ffe5e1b789e2
|
|
| MD5 |
e22c3a6be00239205d2b0a7147240576
|
|
| BLAKE2b-256 |
4abebe72261250b9305d130e65747a745b1f2820c689735dcc27347a71076b07
|