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.1.tar.gz (12.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.1-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

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

Hashes for venspeakerpy-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d3ccafc4c186bfb53ab40a50a8ae96901a1e9ee8b8fd0b0d0a3928b10cb7af85
MD5 24496161b3fe30a99a6519aa1d28a59f
BLAKE2b-256 92e1b97f18167dfd9de63a471d496d0b2f92fab51ba8d23dd09fa4452f8ee6c1

See more details on using hashes here.

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

Hashes for venspeakerpy-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 64a85dd7d89d4aea390e3654f531c4a2f3df09b51a524530e710ffe5e1b789e2
MD5 e22c3a6be00239205d2b0a7147240576
BLAKE2b-256 4abebe72261250b9305d130e65747a745b1f2820c689735dcc27347a71076b07

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