Ударение!!!
А вот лучшая библиотека, которая работает с ударениями, на все 99% лучше Ruaccent.
А вот лучшая библиотека, которая работает с ударениями, на все 99% лучше Ruaccent.
А как ей использовать с F5-TTS_RUSSIAN ? У последнего реально беда с ударениями
Вот скрипт, пользуйся на здоровье, ударение ставится символом +, как и надо для f5 tts.
import os
from pathlib import Path
from omogre import Accentuator, Transcriptor
def process_text_files(folder_path, accentuator):
"""
Обрабатывает все текстовые файлы в папке и подпапках,
перезаписывая оригинальные файлы текстом с акцентами
"""
try:
# Находим все текстовые файлы
text_files = list(Path(folder_path).rglob("*.txt"))
total_files = len(text_files)
if total_files == 0:
print("Текстовые файлы (*.txt) не найдены в указанной папке и подпапках.")
return
print(f"Найдено файлов для обработки: {total_files}")
processed_count = 0
for file_path in text_files:
processed_count += 1
print(f"\rОбработка файла {processed_count}/{total_files}: {file_path.name}", end="", flush=True)
try:
# Читаем содержимое файла
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
if not content.strip():
continue
# Обрабатываем весь текст как одно предложение
sentences = [content]
accentuated = accentuator(sentences)
# Перезаписываем оригинальный файл
with open(file_path, 'w', encoding='utf-8') as f:
f.write(accentuated[0])
except Exception as e:
print(f"\nОшибка при обработке файла {file_path}: {e}")
continue
print(f"\n\nОбработка завершена! Обработано файлов: {processed_count}/{total_files}")
except Exception as e:
print(f"Ошибка при обработке папки: {e}")
def main():
"""
Основная функция скрипта
"""
try:
# Инициализация модели
print("Загрузка модели omogre...")
accentuator = Accentuator(data_path='omogre_data')
print("Модель загружена успешно!")
# Запрос пути к папке
print("\n" + "="*60)
print("Обработчик текстовых файлов с расстановкой ударений")
print("="*60)
while True:
folder_path = input("\nВведите путь к папке с текстовыми файлами: ").strip()
if not folder_path:
print("❌ Путь не может быть пустым.")
continue
folder_path_obj = Path(folder_path)
if not folder_path_obj.exists():
print("❌ Указанная папка не существует.")
continue
if not folder_path_obj.is_dir():
print("❌ Указанный путь не является папкой.")
continue
break
# Обработка файлов
print(f"\n📍 Обрабатываю папку: {folder_path}")
process_text_files(folder_path_obj, accentuator)
input("\nНажмите Enter для выхода...")
except Exception as e:
print(f"❌ Критическая ошибка: {e}")
input("Нажмите Enter для выхода...")
if name == "main":
main()