Ударение!!!

#33
by NGC404 - opened

А вот лучшая библиотека, которая работает с ударениями, на все 99% лучше Ruaccent.

https://huggingface.co/omogr/omogre

А вот лучшая библиотека, которая работает с ударениями, на все 99% лучше Ruaccent.

https://huggingface.co/omogr/omogre

А как ей использовать с 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()

Sign up or log in to comment