-
Notifications
You must be signed in to change notification settings - Fork 215
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' of https://github.com/KoljaB/RealtimeTTS
- Loading branch information
Showing
17 changed files
with
589 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
## Конфигурация | ||
|
||
### Параметры инициализации для `TextToAudioStream` | ||
|
||
Когда вы инициализируете класс `TextToAudioStream`, у вас есть различные параметры для настройки его поведения. Вот доступные параметры: | ||
|
||
#### `engine` (BaseEngine) | ||
- **Тип**: BaseEngine | ||
- **Обязательный**: Да | ||
- **Описание**: Основной движок, отвечающий за синтез текста в аудио. Вы должны предоставить экземпляр `BaseEngine` или его подкласса для включения синтеза аудио. | ||
|
||
#### `on_text_stream_start` (callable) | ||
- **Тип**: Вызываемая функция | ||
- **Обязательная**: Нет | ||
- **Описание**: Эта необязательная функция обратного вызова вызывается, когда начинается поток текста. Используйте его для любой настройки или ведения журнала, которые вам могут понадобиться. | ||
|
||
#### `on_text_stream_stop` (callable) | ||
- **Тип**: Вызываемая функция | ||
- **Обязательна**: Нет Эта необязательная функция обратного вызова активируется, когда поток текста заканчивается. Вы можете использовать это для задач очистки или ведения журнала. | ||
|
||
#### `on_audio_stream_start` (callable) | ||
- **Тип**: Вызываемая функция | ||
- **Обязательная**: Нет | ||
- **Описание**: Эта необязательная функция обратного вызова вызывается, когда начинается аудиопоток. Полезно для обновления пользовательского интерфейса или ведения журналов событий. | ||
|
||
#### `on_audio_stream_stop` (callable) | ||
- **Тип**: Вызываемая функция | ||
- **Обязательно**: Нет | ||
- **Описание**: Эта необязательная функция обратного вызова вызывается, когда аудиопоток останавливается. Идеально подходит для очистки ресурсов или задач постобработки. | ||
|
||
#### `on_character` (callable) | ||
- **Тип**: Вызов функции Нет | ||
- **Описание**: Эта необязательная функция обратного вызова вызывается, когда обрабатывается один символ. | ||
|
||
#### `output_device_index` (int) | ||
- **Тип**: Целое число | ||
- **Обязательно**: Нет | ||
- **По умолчанию**: Нет | ||
- **Описание**: Указывает индекс устройства вывода, которое следует использовать. Ничего не использует устройство по умолчанию. | ||
|
||
#### `tokenizer` (string) | ||
- **Тип**: Строка | ||
- **Обязательно**: Нет | ||
- **По умолчанию**: nltk | ||
- **Описание**: Токенизатор для разбиения на предложения (currently "nltk" and "stanza" are supported). | ||
|
||
#### `language` (string) | ||
- **Тип**: Строка | ||
- **Обязательный**: Нет | ||
- **По умолчанию**: en | ||
- **Описание**: Язык, который использовать для разбиения предложений. | ||
|
||
#### `muted` (bool) | ||
- **Тип**: Bool | ||
- **Обязательный**: Нет | ||
- **По умолчанию**: False | ||
- **Описание**: Глобальный параметр отключения звука. Если True, поток pyAudio не будет открыт. Отключает воспроизведение аудио через локальные динамики (в случае, если вы хотите синтезировать в файл или обрабатывать аудиофрагменты) и переопределяет настройку отключения звука в параметрах воспроизведения. | ||
|
||
#### `level` (int) | ||
- **Тип**: Целое число | ||
- **Обязательный**: Нет | ||
- **По умолчанию**: `logging.WARNING` | ||
- **Описание**: Устанавливает уровень логирования для внутреннего логгера. Это может быть любое целое число из встроенного модуля `logging` Python. | ||
|
||
#### Пример использования: | ||
|
||
```python | ||
engine = YourEngine() # Замените на ваш движок | ||
stream = TextToAudioStream( | ||
engine=engine, | ||
on_text_stream_start=my_text_start_func, | ||
on_text_stream_stop=my_text_stop_func, | ||
on_audio_stream_start=my_audio_start_func, | ||
on_audio_stream_stop=my_audio_stop_func, | ||
level=logging.INFO | ||
) | ||
``` | ||
|
||
### Методы | ||
|
||
#### `play` и `play_async` | ||
|
||
Эти методы отвечают за выполнение синтеза текста в аудио и воспроизведение аудиопотока. Разница в том, что `play` является блокирующей функцией, в то время как `play_async` выполняется в отдельном потоке, позволяя другим операциям продолжаться. | ||
|
||
##### Параметры: | ||
|
||
###### `fast_sentence_fragment` (bool) | ||
- **По умолчанию**: `True` | ||
- **Описание**: Когда установлено значение `True`, метод будет приоритизировать скорость, генерируя и воспроизводя фрагменты предложений быстрее. Это полезно для приложений, где важна задержка. | ||
|
||
###### `fast_sentence_fragment_allsentences` (bool) | ||
- **По умолчанию**: `False` | ||
- **Описание**: Когда установлено значение `True`, применяется быстрая обработка фрагментов предложений ко всем предложениям, а не только к первому. | ||
|
||
###### `fast_sentence_fragment_allsentences_multiple` (bool) | ||
- **По умолчанию**: `Ложь` | ||
- **Описание**: Когда установлено на `True`, позволяет выдавать несколько фрагментов предложений вместо одного. | ||
|
||
###### `buffer_threshold_seconds` (float) | ||
- **По умолчанию**: `0.0` | ||
- **Описание**: Указывает время в секундах для порога буферизации, что влияет на плавность и непрерывность воспроизведения аудио. | ||
|
||
- **Как это работает**: Перед синтезом нового предложения система проверяет, осталось ли в буфере больше аудиоматериала, чем время, указанное в `buffer_threshold_seconds`. Если да, он извлекает другое предложение из генератора текста, предполагая, что сможет получить и синтезировать это новое предложение в пределах временного окна, предоставленного оставшимся аудио в буфере. Этот процесс позволяет движку синтеза речи иметь больше контекста для лучшего синтеза, улучшая пользовательский опыт. | ||
|
||
Большее значение гарантирует наличие большего объема предварительно буферизованного аудио, что снижает вероятность тишины или пауз во время воспроизведения. Если вы испытываете перерывы или паузы, рассмотрите возможность увеличения этого значения. | ||
|
||
###### `minimum_sentence_length` (int) | ||
- **По умолчанию**: `10` | ||
- **Описание**: Устанавливает минимальную длину строки в символах, чтобы считать её предложением для синтеза. Это влияет на то, как обрабатываются и воспроизводятся текстовые фрагменты. | ||
|
||
###### `minimum_first_fragment_length` (int) | ||
- **По умолчанию**: `10` | ||
- **Описание**: Минимальное количество символов, необходимое для первого фрагмента предложения перед завершением. | ||
|
||
###### `log_synthesized_text` (bool) | ||
- **По умолчанию**: `False` | ||
- **Описание**: Когда включено, записывает текстовые фрагменты по мере их синтезации в аудио. Полезно для аудита и отладки. | ||
|
||
###### `reset_generated_text` (bool) | ||
- **По умолчанию**: `True` | ||
- **Описание**: Если верно, сбросьте сгенерированный текст перед обработкой. | ||
|
||
###### `output_wavfile` (str) | ||
- **По умолчанию**: `None` | ||
- **Описание**: Если установлено, сохранить аудио в указанный WAV файл. | ||
|
||
###### `on_sentence_synthesized` (вызываемая функция) | ||
- **По умолчанию**: `None` | ||
- **Описание**: Функция обратного вызова, которая вызывается после синтеза одного фрагмента предложения. | ||
|
||
###### `before_sentence_synthesized` (вызываемая функция) | ||
- **По умолчанию**: `None` | ||
- **Описание**: Функция обратного вызова, которая вызывается перед синтезом отдельного фрагмента предложения. | ||
|
||
###### `on_audio_chunk` (вызываемая функция) | ||
- **По умолчанию**: `None` | ||
- **Описание**: Функция обратного вызова, которая вызывается, когда готов один аудиофрагмент. | ||
|
||
###### `tokenizer` (str) | ||
- **По умолчанию**: `"nltk"` | ||
- **Описание**: Токенизатор для разбиения на предложения. В настоящее время поддерживает "nltk" и "stanza". | ||
|
||
###### `tokenize_sentences` (вызываемый объект) | ||
- **По умолчанию**: `None` | ||
- **Описание**: Пользовательская функция, которая разбивает предложения на токены из входного текста. Вы можете предоставить свой собственный легковесный токенизатор, если вас не устраивают nltk и stanza. Он должен принимать текст в виде строки и возвращать разделённые предложения в виде списка строк. | ||
|
||
###### `language` (str) | ||
- **По умолчанию**: `"en"` | ||
- **Описание**: Язык, используемый для разделения предложений. | ||
|
||
###### `context_size` (int) | ||
- **По умолчанию**: `12` | ||
- **Описание**: Количество символов, используемых для установления контекста при определении границ предложений. Более широкий контекст улучшает точность определения границ предложений. | ||
|
||
###### `context_size_look_overhead` (int) | ||
- **По умолчанию**: `12` | ||
- **Описание**: Дополнительный размер контекста для просмотра вперед при определении границ предложений. | ||
|
||
###### `muted` (bool) | ||
- **По умолчанию**: `False` | ||
- **Описание**: Если True, отключает воспроизведение аудио через локальные динамики. Полезно, когда вы хотите синтезировать в файл или обрабатывать аудиофрагменты без их воспроизведения. | ||
|
||
###### `sentence_fragment_delimiters` (str) | ||
- **По умолчанию**: `".?!;:,\n…)]}。-"` | ||
- **Описание**: Строка символов, которые считаются разделителями предложений. | ||
|
||
###### `force_first_fragment_after_words` (int) | ||
- **По умолчанию**: `15` | ||
- **Описание**: Количество слов, после которых первый фрагмент предложения должен быть выдан. | ||
|
||
|
Oops, something went wrong.