Skip to main content

Python TTS package using Silero models for Russian language

Project description

ven-speaker-py

Форк библиотеки speakerpy с модификациями и улучшениями для потоковой работы с аудио и TTS.

logo

🔹 Описание

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:

  1. speak: произнесение текста. Теперь это потоковая передача звука в байтах, что позволяет использовать звук где-то еще (например, для трансляции в Discord)
  2. 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:

  1. chunk: разделение текста на блоки.

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

text = SeleroText("Привет, мир!", to_language="ru")

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

for chunk in text.chunk():
    print(chunk)

Ресурсы и ссылки

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

venspeakerpy-0.1.0.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

venspeakerpy-0.1.0-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file venspeakerpy-0.1.0.tar.gz.

File metadata

  • Download URL: venspeakerpy-0.1.0.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for venspeakerpy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f68e236994cf3451f40f0f053740ddc7026baec0853f8dbe43c9e2fd9fabd438
MD5 8e08e4eac2c57e191fa938bc3be5f750
BLAKE2b-256 23a321c7e4333990e19eb3de04bf886d19e620e4e40eb15842b913e3ae6bf1eb

See more details on using hashes here.

File details

Details for the file venspeakerpy-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: venspeakerpy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for venspeakerpy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cbaa0c57e7135a019cd03ff7e806b17ce55c68f82ebe2f896f3cf9fa8bdd6367
MD5 3b8ee33118903bc1ada235b0c77cacb9
BLAKE2b-256 23d72bb79eeb78a6acb31ec6c8d6271448e34a85c8647470d8c4030cb8cd1878

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page