Решение ошибки ImportError: BeamSearchScorer в Coqui TTS XTTS v2
При запуске скрипта синтеза речи на основе Coqui TTS XTTS v2 в среде Python 3.11 под Linux возникает ошибка импорта модуля BeamSearchScorer из библиотеки transformers. Проблема проявляется при попытке инициализации модели tts_models/multilingual/multi-dataset/xtts_v2.
Анализ проблемы
Трассировка ошибки указывает на несовместимость версий библиотек. Конкретно, модуль BeamSearchScorer был перемещён или переименован в более новых версиях transformers. Исходный код из стандартного README проекта Coqui TTS не работает "из коробки" с актуальными зависимостями.
Текст ошибки
ImportError: cannot import name 'BeamSearchScorer' from 'transformers'
Предлагаемые решения
Способ 1: Установка совместимых версий библиотек
Создайте новое виртуальное окружение и установите проверенные версии:
transformers == 4.30.2TTS == 0.20.1torch >= 2.0.0(соответствующая вашей системе версия CUDA)
Команда для установки:
pip install transformers==4.30.2 TTS==0.20.1 torch torchaudio
Способ 2: Модификация кода для новых версий
Если необходимо использовать актуальные версии библиотек, потребуется патчинг. В файле stream_generator.py замените импорт:
Было:from transformers import (BeamSearchScorer, ...)
Стало:from transformers.generation import BeamSearchScorer
Полный путь к файлу в вашем случае: /home/sakair/Prog/jarvis/venv/lib/python3.11/site-packages/TTS/tts/layers/xtts/stream_generator.py
Способ 3: Использование альтернативной модели
Если решение с XTTS v2 критично, рассмотрите временный переход на другие модели из списка, доступного через TTS().list_models(), пока проблема не будет исправлена в основном репозитории.
Проверка решения
После применения одного из методов выполните минимальный тестовый скрипт:
from TTS.api import TTS
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2", progress_bar=False)
print("Модель успешно загружена")
Дополнительные рекомендации
- Проверьте наличие обновлений Coqui TTS на GitHub - проблема может быть уже решена в новых коммитах
- Для production-использования зафиксируйте версии всех зависимостей в
requirements.txt - Убедитесь, что файл
ok.wavсуществует в директории скрипта и имеет корректный формат