1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chenwuchen-espnet

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ESPnet: end-to-end speech processing toolkit

Система / PyTorch версия 1.12.1 1.13.1 2.0.1 2.1.0
Ubuntu / Python 3.10 / pip
Ubuntu / Python 3.9 / pip
Ubuntu / Python 3.8 / pip
Ubuntu / Python 3.7 / pip ci on ubuntu ci on ubuntu
Debian 11 / Python 3.10 / conda
CentOS 7 / Python 3.10 / conda
Windows / Python 3.10 / pip ci on windows
macOS / Python 3.10 / pip
macOS / Python 3.10 / conda

PyPI version Python Versions Downloads GitHub license codecov Code style: black pre-commit.ci status Mergify Status ESPnet — это комплексный инструментарий для обработки речи, охватывающий распознавание речи, синтез речи, перевод речи, улучшение речи, разделение речи по дикторам, понимание разговорной речи и т. д.

ESPnet использует PyTorch в качестве движка глубокого обучения, а также следует стилю обработки данных Kaldi, формату извлечения/представления признаков и рецептам для обеспечения полной настройки различных экспериментов по обработке речи.

Серия учебных пособий

Основные функции

Стиль Kaldi с полным рецептом

  • Поддержка множества рецептов ASR (WSJ, Switchboard, CHiME-4/5, Librispeech, TED, CSJ, AMI, HKUST, Voxforge, REVERB, Gigaspeech и др.).
  • Поддержка множества рецептов TTS (LJSpeech, LibriTTS, M-AILABS и др.) аналогично рецептам ASR.
  • Поддержка множества ST-рецептов (Fisher-CallHome Spanish, Libri-trans, IWSLT'18, How2, Must-C, Mboshi-French и др.).
  • Поддержка множества MT-рецептов (IWSLT'14, IWSLT'16, вышеупомянутые ST-рецепты и др.).
  • Поддержка множества SLU-рецептов (CATSLU-MAPS, FSC, Grabo, IEMOCAP, JDCINAL, SNIPS, SLURP, SWBD-DA и др.).
  • Поддержка множества SE/SS-рецептов (DNS-IS2020, LibriMix, SMS-WSJ, VCTK-noisyreverb, WHAM!, WHAMR!, WSJ-2mix и др.).
  • Поддержка рецепта преобразования голоса (VCC2020 baseline).
  • Поддержка рецепта разделения речи по дикторам (mini_librispeech, librimix).
  • Поддержка рецепта синтеза поющего голоса (ofuton_p_utagoe_db, opencpop, m4singer и др.).

Распознавание речи (ASR)

  • Передовое качество в нескольких тестах ASR (сопоставимое или превосходящее гибридные DNN/HMM и CTC).
  • Гибридное распознавание речи CTC/внимание на основе сквозного распознавания речи:
    • Быстрая и точная тренировка с многозадачным обучением CTC/внимания.
    • Совместное декодирование CTC/внимания для улучшения монотонного выравнивания при декодировании.
    • Кодер: VGG-подобная CNN + BiRNN (LSTM/GRU), субдискретизированная BiRNN (LSTM/GRU), Transformer, Conformer, Branchformer или E-Branchformer.
    • Декодер: RNN (LSTM/GRU), Transformer или S4.
    • Внимание: точечное произведение, пространственно-зависимое внимание, варианты многоголового внимания.
    • Включение RNNLM/LSTMLM/TransformerLM/N-грамм, обученных только на текстовых данных.
    • Пакетное декодирование GPU.
    • Увеличение данных.
  • Распознавание речи на основе преобразователя:
    • Архитектура: пользовательский кодер, поддерживающий RNNs, Conformer, Branchformer (с вариантами), 1D Conv / TDNN; декодер с параметрами, общими для блоков, поддерживающих RNN, без состояния с 1D Conv, MEGA и RWKV.
    • Алгоритмы поиска: жадный поиск, ограниченный одним излучением за временной шаг; алгоритм поиска луча по умолчанию [[Graves, 2012]] без префиксного поиска; синхронное декодирование с выравниванием по длине [[Saon et al., 2017]]. Системы распознавания и синтеза речи ESPnet2
  1. Распознавание речи (ASR)
    • Синхронное декодирование по времени (Time Synchronous Decoding).
    • N-шаговый ограниченный поиск луча, модифицированный из работы Kim et al., 2020.
    • Модифицированный адаптивный поиск с расширением на основе Kim et al., 2021, и NSC.
  • Особенности:
    • Унифицированный интерфейс для офлайн- и потокового распознавания речи.
    • Многозадачное обучение с различными вспомогательными потерями:
      • Кодер: CTC, вспомогательный преобразователь и симметричная дивергенция KL.
      • Декодер: перекрёстная энтропия с сглаживанием меток.
    • Трансферное обучение с акустической моделью и/или языковой моделью.
    • Обучение с методом регуляризации FastEmit Yu et al., 2021.

Пожалуйста, обратитесь к странице учебника для получения полной документации.

  • Сегментация CTC.

  • Модель без авторегрессии на основе Mask-CTC.

  • Примеры ASR для поддержки документации исчезающих языков (подробности см. в egs/puebla_nahuatl и egs/yoloxochitl_mixtec).

  • Предварительно обученная модель Wav2Vec2.0 в качестве кодера, импортированная из FairSeq.

  • Самостоятельное обучение представлениям в качестве признаков с использованием восходящих моделей в S3PRL во внешнем интерфейсе.

    • Установите для frontend значение s3prl.
    • Выберите любую восходящую модель, установив для frontend_conf соответствующее имя.
  • Трансфертное обучение:

    • Простота использования и перенос от моделей, ранее обученных вашей группой, или моделей из репозитория ESPnet Hugging Face.
    • Документация и игрушечный пример, который можно запустить в colab.
  • Потоковое распознавание речи с помощью Transformer/Conformer ASR с блочным синхронным поиском луча.

  • Ограниченное самовнимание на основе Longformer в качестве кодировщика для длинных последовательностей.

  • Модель OpenAI Whisper, надёжное распознавание речи на основе крупномасштабного слабоконтролируемого многозадачного обучения.

Демонстрация:

  • Демонстрация в реальном времени с ESPnet2.
  • Веб-демонстрация Gradio на Hugging Face Spaces. Посмотрите веб-демонстрацию.
  • Локальная демонстрация потокового распознавания речи с ESPnet2.

TTS: Синтез речи

  1. Синтез речи (TTS)
  • Архитектура:
    • Tacotron2.
    • Transformer-TTS.
    • FastSpeech.
    • FastSpeech2.
    • Conformer FastSpeech & FastSpeech2.
    • VITS.
    • JETS.
  • Расширение для нескольких динамиков и языков:
    • Предварительно обученное встраивание динамиков (например, X-вектор).
    • Встраивание идентификатора динамика.
    • Встраивание языка.
    • Глобальное стилевое токеновое (GST) встраивание.
    • Сочетание вышеперечисленных вложений.
  • Сквозное обучение:
    • Сквозная модель text2wav (например, VITS, JETS и т. д.).
    • Совместное обучение text2mel и вокодера.
  • Поддержка различных языков:
    • En / Jp / Zn / De / Ru и другие.
  • Интеграция с нейронными вокодерами:
    • Parallel WaveGAN.
    • MelGAN.
    • Multi-band MelGAN.
    • HiFiGAN.
    • StyleMelGAN.
    • Комбинации вышеперечисленных моделей.

Демонстрация:

Для обучения нейронного вокодера проверьте следующие репозитории:

SE: улучшение и разделение речи

  • Улучшение речи одного говорящего;
  • Разделение речи нескольких говорящих;
  • Объединённая структура кодировщика-разделителя-декодировщика для моделей в частотной и временной областях:
    • Кодировщик/декодировщик: STFT/iSTFT, свёртка/транспонированная свёртка;
    • Разделители: BLSTM, Transformer, Conformer, TasNet, DPRNN, SkiM, SVoice, DC-CRN, DCCRN, Deep Clustering, Deep Attractor Network, FaSNet, iFaSNet, Neural Beamformers и др.
  • Гибкая интеграция ASR: работа как отдельная задача или как интерфейс ASR;
  • Простота импорта предварительно обученных моделей из Asteroid: поддерживаются как предварительно обученные модели из Asteroid, так и специфическая конфигурация.

Демонстрация:

  • Интерактивная демонстрация SE с ESPnet2 Open In Colab;
  • Демонстрация потоковой передачи SE с ESPnet2 Open In Colab.

ST: перевод речи и MT: машинный перевод

  • Передовые показатели в нескольких тестах ST (сопоставимы/превосходят каскадные ASR и MT);
  • Новый! Трансформер-основанный сквозной ST;
  • Новый! Трансформер-основанный сквозной MT.

VC: преобразование голоса

  • Трансформер и Tacotron2-основанное параллельное VC с использованием спектрограммы Mel;
  • Сквозное VC на основе каскадных ASR+TTS (базовая система для Voice Conversion Challenge 2020!).

SLU: понимание разговорной речи

Архитектура:

  • Трансформер-основанный кодировщик;
  • Конформер-основанный кодировщик;
  • Основанный на Branchformer кодировщик;
  • Основанный на E-Branchformer кодировщик;
  • RNN-основанный декодер;
  • Трансформер-основанный декодер. Поддержка многозадачности с ASR: предсказание как намерения, так и расшифровки ASR. Поддержка многозадачности с NLU: двухпроходная модель на основе делиберационного кодировщика. Использование предварительно обученных моделей ASR: Hubert, Wav2vec2, VQ-APC, TERA и др. Использование предварительно обученных NLP-моделей: BERT, MPNet и др. Различные языки поддержки: En, Jp, Zn, Nl и др. Поддержка использования контекста из предыдущих высказываний. Поддержка использования других задач, таких как SE, в конвейерном режиме. Поддержка двухпроходного SLU, который объединяет аудио и расшифровку ASR. Демонстрация:
  • Выполнение шумного понимания разговорной речи с помощью модели улучшения речи, за которой следует модель понимания разговорной речи. Open In Colab;
  • Выполнение двухпроходного понимания разговорной речи, где вторая проходная модель учитывает как акустическую, так и семантическую информацию. Open In Colab;
  • Интеграция с Hugging Face Spaces с Gradio. Смотрите демонстрацию SLU на нескольких языках: Hugging Face. SUM: Speech Summarization
  • End to End Speech Summarization Recipe for Instructional Videos using Restricted Self-Attention [Sharma et al., 2022]

SVS: Singing Voice Synthesis

  • Framework merge from Muskits
  • Architecture
    • RNN-based non-autoregressive model
    • Xiaoice
    • Tacotron-singing
    • DiffSinger (в процессе разработки)
    • VISinger
    • VISinger 2 (его вариации с различными архитектурами вокодеров)
  • Поддержка многопользовательского и многоязычного синтеза пения
    • Встраивание идентификатора говорящего
    • Встраивание языкового идентификатора
  • Различная языковая поддержка
    • Jp / En / Kr / Zh
  • Тесная интеграция с нейронными вокодерами (такими же, как TTS)

SSL: Самостоятельное обучение

  • Поддержка предварительного обучения HuBERT:

UASR: Неконтролируемое распознавание речи (EURO: ESPnet Неконтролируемое Распознавание — Open-source)

  • Архитектура
    • wav2vec-U (с различными моделями самостоятельного обучения)
    • wav2vec-U 2.0 (в процессе разработки)
  • Поддержка PrefixBeamSearch и K2-based WFST декодирования

S2T: Речь в текст с многоязычными мультизадачными моделями Whisper-style

  • Воспроизводит обучение Whisper-стиля с нуля, используя общедоступные данные: OWSM
  • Поддерживает несколько задач в одной модели
    • Многоязычное распознавание речи
    • Перевод речи «любой к любому»
    • Идентификация языка
    • Прогнозирование временных меток на уровне высказываний (сегментация)

DNN Framework

  • Гибкая сетевая архитектура благодаря Chainer и PyTorch
  • Гибкий фронтэнд-процесс благодаря kaldiio и поддержке HDF5
  • Мониторинг на основе Tensorboard

ESPnet2

См. ESPnet2.

  • Независим от Kaldi/Chainer, в отличие от ESPnet1
  • Извлечение функций и обработка текста в реальном времени при обучении
  • Поддержка DistributedDataParallel и DaraParallel
  • Поддержка обучения на нескольких узлах и интегрирована с Slurm или MPI
  • Поддержка Sharded Training, предоставляемая fairscale
  • Шаблонный рецепт, который можно применить ко всем корпусам
  • Возможность обучать корпуса любого размера без ошибки памяти процессора
  • ESPnet Model Zoo
  • Интегрирован с wandb

Установка

  • Если вы собираетесь проводить полные эксперименты, включая обучение DNN, см. Установка.

  • Если вам нужен только модуль Python:

    # Мы рекомендуем установить PyTorch перед установкой espnet, следуя https://pytorch.org/get-started/locally/
    pip install espnet
    # Для установки последней версии
    # pip install git+https://github.com/espnet/espnet
    # Чтобы установить дополнительные пакеты
    # pip install "espnet[all]"

    Если вы используете ESPnet1, установите chainer и cupy.

    pip install chainer==6.0.0 cupy==6.0.0    # [Option]

    Вам могут потребоваться некоторые пакеты в зависимости от каждой задачи. Мы подготовили различные сценарии установки в tools/installers.

  • (ESPnet2) После установки запустите wandb login и установите --use_wandb true, чтобы включить отслеживание запусков с помощью W&B.

Docker Container

Перейдите в docker/ и следуйте инструкциям.

Вклад

Спасибо, что уделили время ESPnet! Любые вклады в ESPnet приветствуются, и не стесняйтесь задавать вопросы или запросы по проблемам. Если это ваш первый вклад в ESPnet, пожалуйста, следуйте руководству по вкладу.

Результаты ASR

Мы приводим коэффициент ошибок символов (CER) и коэффициент ошибок слов (WER) для основных задач распознавания речи. CER (%) WER (%) Предварительно обученная модель
Aishell разработка/тестирование 4,6/5,1 N/A ссылка
ESPnet2 Aishell разработка/тестирование 4,1/4,4 N/A ссылка
Common Voice разработка/тестирование 1,7/1,8 2,2/2,3 ссылка
CSJ eval1/eval2/eval3 5,7/3,8/4,2 N/A ссылка
ESPnet2 CSJ eval1/eval2/eval3 4,5/3,3/3,6 N/A ссылка
ESPnet2 GigaSpeech разработка/тестирование N/A 10,6/10,5 ссылка
HKUST разработка 23,5 N/A ссылка
ESPnet2 HKUST разработка 21,2 N/A ссылка
Librispeech разработка_чистый/разработка_другой/тестирование_чистое/тестирование_другое N/A 1,9/4,9/2,1/4,9 ссылка
ESPnet2 Librispeech разработка_чистый/разработка_другой/тестирование_чистое/тестирование_другое 0,6/1,5/0,6/1,4 1,7/3,4/1,8/3,6 ссылка
Switchboard (eval2000) callhm/swbd N/A 14,0/6,8 ссылка
ESPnet2 Switchboard (eval2000) callhm/swbd N/A 13,4/7,3 ссылка
TEDLIUM2 разработка/тестирование N/A 8,6/7,2 ESPnet2 TEDLIUM2 dev/test

TEDLIUM3 dev/test | N/A | 9.6/7.6

WSJ dev93/eval92 | 3.2/2.1 | 7.0/4.7

ESPnet2 WSJ dev93/eval92 | 1.1/0.8 | 2.8/1.8

Обратите внимание, что производительность задач CSJ, HKUST и Librispeech была значительно улучшена за счёт использования широкой сети (#units = 1024) и больших субсловных единиц, о чём сообщалось в RWTH.

Если вы хотите проверить результаты других рецептов, пожалуйста, проверьте egs/<name_of_recipe>/asr1/RESULTS.md.

ASR demo

Вы можете распознавать речь в файле WAV с помощью предварительно обученных моделей. Перейдите в каталог рецептов и запустите utils/recog_wav.sh следующим образом:

# перейдите в каталог рецептов и путь к инструментам espnet
cd egs/tedlium2/asr1 && . ./path.sh
# давайте распознаем речь!
recog_wav.sh --models tedlium2.transformer.v1 example.wav

где example.wav — файл WAV, который нужно распознать. Частота дискретизации должна соответствовать частоте данных, используемых при обучении.

В демо-скрипте доступны следующие предварительно обученные модели.

Модель Примечания
tedlium2.rnn.v1 Потоковое декодирование на основе VAD на основе CTC
tedlium2.rnn.v2 Потоковое декодирование на основе VAD на основе CTC (пакетное декодирование)
tedlium2.transformer.v1 Трансформатор с совместным вниманием, обученный на Tedlium 2
tedlium3.transformer.v1 Трансформатор с совместным вниманием, обученный на Tedlium 3
librispeech.transformer.v1 Трансформатор с совместным вниманием, обученный на Librispeech
commonvoice.transformer.v1 Трансформатор с совместным вниманием, обученный на CommonVoice
csj.transformer.v1 Трансформатор с совместным вниманием, обученный на CSJ
csj.rnn.v1 VGGBLSTM с совместным вниманием, обученным на CSJ

SE результаты

Мы приводим результаты трёх разных моделей на WSJ0-2mix, которые являются одним из наиболее широко используемых эталонных наборов данных для разделения речи. | SAR | SDR | SIR | | ------------------------------------------------- | ---- | ----- | ----- | ----- | | TF Masking | 0,89 | 11,40 | 10,24 | 18,04 | | Conv-Tasnet | 0,95 | 16,62 | 15,94 | 25,90 | | DPRNN-Tasnet | 0,96 | 18,82 | 18,29 | 28,92 |

SE demos

Вы можете попробовать интерактивную демонстрацию с Google Colab. Пожалуйста, нажмите на следующую кнопку, чтобы получить доступ к демонстрациям.

Open In Colab

Она основана на ESPnet2. Доступны предварительно обученные модели как для задач улучшения речи, так и для разделения речи.

Демонстрации потокового разделения речи:

Open In Colab

ST results

Мы приводим 4-граммовый BLEU основных задач ST.

End-to-end system

Задача BLEU Pre-trained model
Fisher-CallHome Spanish fisher_test (Es->En) 51,03 link
Fisher-CallHome Spanish callhome_evltest (Es->En) 20,44 link
Libri-trans test (En->Fr) 16,70 link
How2 dev5 (En->Pt) 45,68 link
Must-C tst-COMMON (En->De) 22,91 link
Mboshi-French dev (Fr->Mboshi) 6,18 N/A

Cascaded system

Задача BLEU Pre-trained model
Fisher-CallHome Spanish fisher_test (Es->En) 42,16 N/A
Fisher-CallHome Spanish callhome_evltest (Es->En) 19,82 N/A
Libri-trans test (En->Fr) 16,96 N/A
How2 dev5 (En->Pt) 44,90 N/A
Must-C tst-COMMON (En->De) 23,65 N/A

Если вы хотите проверить результаты других рецептов, пожалуйста, проверьте egs/<name_of_recipe>/st1/RESULTS.md.

ST demo

(New!) Мы сделали новую демонстрацию E2E-ST + TTS в реальном времени в Google Colab. Пожалуйста, перейдите по кнопке в ноутбуке и наслаждайтесь переводом речи в реальном времени!

Open In Colab


Вы можете переводить речь из файла WAV с помощью предварительно обученных моделей. Перейдите в каталог с рецептами и запустите utils/translate_wav.sh следующим образом:

# Перейдите в каталог с рецептами и путь к инструментам espnet
cd egs/fisher_callhome_spanish/st1 && . ./path.sh
# Скачайте пример файла WAV
wget -O - https://github.com/espnet/espnet/files/4100928/test.wav.tar.gz | tar zxvf -
# Переведите речь!
translate_wav.sh --models fisher_callhome_spanish.transformer.v1.es-en test.wav

где test.wav — файл WAV для перевода. Частота дискретизации должна соответствовать частоте данных, использованных при обучении.

В демо-скрипте доступны следующие предварительно обученные модели.

Модель Примечания
fisher_callhome_spanish.transformer.v1 Transformer-ST, обученный на Fisher-CallHome Spanish Es->En

Результаты MT

expand
Задача BLEU Предварительно обученная модель
Fisher-CallHome испанский fisher_test (Es->En) 61.45 ссылка
Fisher-CallHome испанский callhome_evltest (Es->En) 29.86 ссылка
Libri-trans тест (En->Fr) 18.09 ссылка
How2 dev5 (En->Pt) 58.61 ссылка
Must-C tst-COMMON (En->De) 27.63 ссылка
IWSLT'14 тест2014 (En->De) 24.70 ссылка
IWSLT'14 тест2014 (De->En) 29.22 ссылка
IWSLT'14 тест2014 (De->En) 32.2 ссылка
IWSLT'16 тест2014 (En->De) 24.05 ссылка
IWSLT'16 тест2014 (De->En) 29.13 TTS results

ESPnet2

Сгенерированные образцы можно прослушать по следующей ссылке.

Обратите внимание, что при генерации мы используем Griffin-Lim (wav/) и Parallel WaveGAN (wav_pwg/).

Предварительно обученные модели можно скачать через espnet_model_zoo.

Предварительно обученные вокодеры можно скачать через kan-bayashi/ParallelWaveGAN.

ESPnet1

Примечание: Мы переходим на разработку на основе ESPnet2 для TTS. Пожалуйста, ознакомьтесь с последними результатами в разделе выше.

Наши образцы можно послушать в демо HP [espnet-tts-sample]. Вот некоторые из них:

Все предварительно обученные модели и сгенерированные выборки можно скачать:

Обратите внимание, что в сгенерированных образцах мы используем следующие вокодеры: Griffin-Lim (GL), WaveNet vocoder (WaveNet), Parallel WaveGAN (ParallelWaveGAN) и MelGAN (MelGAN). Нейронные вокодеры основаны на следующих репозиториях.

Если вы хотите создать свой собственный нейронный вокодер, пожалуйста, проверьте указанные выше репозитории. kan-bayashi/ParallelWaveGAN предоставляет руководство о том, как декодировать функции модели ESPnet-TTS с помощью нейронных вокодеров. Пожалуйста, проверьте его.

Здесь мы перечисляем все предварительно обученные нейронные вокодеры. Пожалуйста... Скачайте и наслаждайтесь генерацией высококачественной речи!

Модель Язык Fs [Гц] Mel range [Гц] FFT / Shift / Win [pt] Тип модели
ljspeech.wavenet.softmax.ns.v1 EN 22.05k Нет 1024 / 256 / Нет Softmax WaveNet (https://github.com/kan-bayashi/PytorchWaveNetVocoder)
ljspeech.wavenet.mol.v1 EN 22.05k Нет 1024 / 256 / Нет MoL WaveNet (https://github.com/r9y9/wavenet_vocoder)
ljspeech.parallel_wavegan.v1 EN 22.05k Нет 1024 / 256 / Нет Parallel WaveGAN (https://github.com/kan-bayashi/ParallelWaveGAN)
ljspeech.wavenet.mol.v2 EN 22.05k 80–7600 1024 / 256 / Нет MoL WaveNet (https://github.com/r9y9/wavenet_vocoder)
ljspeech.parallel_wavegan.v2 EN 22.05k 80–7600 1024 / 256 / Нет Parallel WaveGAN (https://github.com/kan-bayashi/ParallelWaveGAN)
ljspeech.melgan.v1 EN 22.05k 80–7600 1024 / 256 / Нет MelGAN (https://github.com/kan-bayashi/ParallelWaveGAN)
ljspeech.melgan.v3 EN 22.05k 80–7600 1024 / 256 / Нет MelGAN (https://github.com/kan-bayashi/ParallelWaveGAN)
libritts.wavenet.mol.v1 EN 24k Нет 1024 / 256 / Нет MoL WaveNet (https://github.com/r9y9/wavenet_vocoder)
jsut.wavenet.mol.v1 JP 24k 80–7600 2048 / 300 / 1200 MoL WaveNet (https://github.com/r9y9/wavenet_vocoder)
jsut.parallel_wavegan.v1 JP 24k 80–7600 2048 / 300 / 1200 Parallel WaveGAN (https://github.com/kan-bayashi/ParallelWaveGAN)
csmsc.wavenet.mol.v1 ZH 24k 80–7600 2048 / 300 / 1200 MoL WaveNet (https://github.com/r9y9/wavenet_vocoder)
csmsc.parallel_wavegan.v1 ZH 24k 80–7600 2048 / 300 / 1200 Parallel WaveGAN (https://github.com/kan-bayashi/ParallelWaveGAN)

Если вы хотите использовать указанные выше предварительно обученные вокодеры, пожалуйста, точно соблюдайте указанные настройки функций.

Демо TTS

ESPnet2

Вы можете попробовать демо в реальном времени в Google Colab. Пожалуйста, получите доступ к ноутбуку с помощью следующей кнопки и насладитесь синтезом в реальном времени!

— Демо в реальном времени TTS с ESPnet2 Open In Colab

В демо доступны модели на английском, японском и китайском языках.

ESPnet1

Примечание: Мы переходим на новый этап. Разработка на основе ESPnet2 для TTS.

Пожалуйста, ознакомьтесь с последней демонстрацией в приведённой выше демонстрации ESPnet2.

Вы можете попробовать демонстрацию в реальном времени в Google Colab.

Получите доступ к ноутбуку с помощью следующей кнопки и наслаждайтесь синтезом в реальном времени.

Демонстрация TTS в реальном времени с ESPnet1

Open In Colab

Мы также предоставляем сценарий оболочки для выполнения синтеза. Перейдите в каталог рецептов и запустите utils/synth_wav.sh следующим образом:

# Перейдите в каталог рецептов и путь к инструментам espnet
cd egs/ljspeech/tts1 && . ./path.sh

# Мы используем последовательность символов верхнего регистра для модели по умолчанию.
echo "ЭТО ДЕМОНСТРАЦИЯ ПРЕОБРАЗОВАНИЯ ТЕКСТА В РЕЧЬ." > example.txt

# Давайте синтезируем речь!
synth_wav.sh example.txt

Также вы можете использовать несколько предложений:

echo "ЭТО ДЕМОНСТРАЦИЯ ПРЕОБРАЗОВАНИЯ ТЕКСТА В РЕЧЬ." > example_multi.txt
echo "ПРЕОБРАЗОВАНИЕ ТЕКСТА В РЕЧЬ — ЭТО МЕТОД ПРЕОБРАЗОВАНИЯ ТЕКСТА В РЕЧЬ." >> example_multi.txt
synth_wav.sh example_multi.txt

Можно изменить предварительно обученную модель следующим образом:

synth_wav.sh --models ljspeech.fastspeech.v1 example.txt

Синтез сигналов выполняется с использованием алгоритма Гриффина-Лима и нейронных вокодеров (WaveNet и ParallelWaveGAN).

Можно изменить предварительно обученный вокодер следующим образом:

synth_wav.sh --vocoder_models ljspeech.wavenet.mol.v1 example.txt

Вокодер WaveNet обеспечивает очень высокое качество речи, но требует времени для генерации.

Дополнительные сведения или доступные модели можно получить с помощью --help.

synth_wav.sh --help

Результаты VC

  • Трансформатор и Tacotron2-based VC.

Некоторые образцы можно прослушать на демонстрационной веб-странице.

  • Каскадный ASR+TTS как одна из базовых систем VCC2020.

В Voice Conversion Challenge 2020 (VCC2020) используется ESPnet для создания базовой системы на основе «конец-в-конец». В VCC2020 целью является внутри- и межъязыковая непараллельная VC. Вы можете загрузить преобразованные образцы базовой каскадной системы ASR+TTS здесь.

SLU результаты

Мы приводим показатели производительности для различных задач и наборов данных SLU, используя метрику, указанную в оригинальной статье о наборе данных.

Задача Набор данных Метрика Результат Предварительно обученная модель
Классификация намерений SLURP Acc 86.3 ссылка
Классификация намерений FSC Acc 99.6 ссылка
Классификация намерений FSC Unseen Speaker Set Acc 98.6 ссылка
Классификация намерений FSC Unseen Utterance Set Acc 86.4 ссылка
--- --- --- ---
Intent Classification FSC Challenge Utterance Set Acc 78.5 link
Intent Classification SNIPS F1 91.7 link
Intent Classification Grabo (Nl) Acc 97.2 link
Intent Classification CAT SLU MAP (Zn) Acc 78.9 link
Intent Classification Google Speech Commands Acc 98.4 link
Slot Filling SLURP SLU-F1 71.9 link
Dialogue Act Classification Switchboard Acc 67.5 link
Dialogue Act Classification Jdcinal (Jp) Acc 67.4 link
Emotion Recognition IEMOCAP Acc 69.4 link
Emotion Recognition swbd_sentiment Macro F1 61.4 link
Emotion Recognition slue_voxceleb Macro F1 44.0 link

If you want to check the results of the other recipes, please check egs2/<name_of_recipe>/asr1/RESULTS.md.

CTC Segmentation demo

CTC segmentation determines utterance segments within audio files. Aligned utterance segments constitute the labels of speech datasets.

As a demo, we align the start and end of utterances within the audio file ctc_align_test.wav, using the example script utils/asr_align_wav.sh. For preparation, set up a data directory:

cd egs/tedlium2/align1/
# data directory
align_dir=data/demo
mkdir -p ${align_dir}
# wav file
base=ctc_align_test
wav=../../../test_utils/${base}.wav
# recipe files
echo "batchsize: 0" > ${align_dir}/align.yaml

cat << EOF > ${align_dir}/utt_text
${base} THE SALE OF THE HOTELS
${base} IS PART OF HOLIDAY'S STRATEGY
${base} TO SELL OFF ASSETS
${base} AND CONCENTRATE
${base} ON PROPERTY MANAGEMENT
EOF

Here, utt_text is the file containing the list of utterances. Choose a pre-trained ASR model that includes a CTC layer to find utterance segments: Предварительно обученная модель ASR

model=wsj.transformer_small.v1 mkdir ./conf && cp ../../wsj/asr1/conf/no_preprocess.yaml ./conf

../../../utils/asr_align_wav.sh
--models ${model}
--align_dir ${align_dir}
--align_config ${align_dir}/align.yaml
${wav} ${align_dir}/utt_text

Сегменты записываются в aligned_segments в виде списка имён файлов/высказываний, времени начала и окончания высказывания в секундах и показателя достоверности. Показатель достоверности — это вероятность в логарифмическом пространстве, которая указывает на то, насколько хорошо высказывание было выровнено. При необходимости удалите плохие высказывания:

min_confidence_score=-5 awk -v ms=${min_confidence_score} '{ if ($5 > ms) {print} }' ${align_dir}/aligned_segments

В демонстрационном скрипте utils/ctc_align_wav.sh используется предварительно обученная модель ASR (см. список выше для получения дополнительной информации о моделях). Рекомендуется использовать модели с RNN-кодировщиками (например, BLSTMP) для выравнивания больших аудиофайлов; вместо моделей Transformer с высоким потреблением памяти для более длинных аудиоданных. Частота дискретизации звука должна соответствовать частоте данных, использованных при обучении; при необходимости отрегулируйте с помощью sox. Полный пример рецепта находится в egs/tedlium2/align1/.

ESPnet2

Сегментация CTC определяет сегменты высказываний в аудиофайлах. Выровненные сегменты высказываний составляют метки речевых наборов данных.

В качестве демонстрации мы выравниваем начало и конец высказываний в аудиофайле ctc_align_test.wav. Это можно сделать либо непосредственно из командной строки Python, либо с помощью скрипта espnet2/bin/asr_align.py.

Из интерфейса командной строки Python:

загрузить модель с символьными токенами

from espnet_model_zoo.downloader import ModelDownloader d = ModelDownloader(cachedir="./modelcache") wsjmodel = d.download_and_unpack("kamo-naoyuki/wsj")

загрузить пример файла, включённый в репозиторий ESPnet

import soundfile speech, rate = soundfile.read("./test_utils/ctc_align_test.wav")

сегментация CTC

from espnet2.bin.asr_align import CTCSegmentation aligner = CTCSegmentation(**wsjmodel, fs=rate) text = """ utt1 THE SALE OF THE HOTELS utt2 IS PART OF HOLIDAY'S STRATEGY utt3 TO SELL OFF ASSETS utt4 AND CONCENTRATE ON PROPERTY MANAGEMENT """ segments = aligner(speech, text) print(segments)

utt1 utt 0.26 1.73 -0.0154 THE SALE OF THE HOTELS

utt2 utt 1.73 3.19 -0.7674 IS PART OF HOLIDAY'S STRATEGY

utt3 utt 3.19 4.20 -0.7433 TO SELL OFF ASSETS

utt4 utt 4.20 6.10 -0.4899 AND CONCENTRATE ON PROPERTY MANAGEMENT

Выравнивание также работает с фрагментами текста. Для этого установите опцию gratis_blank, которая позволяет пропускать несвязанные разделы аудио без штрафа. Также можно опустить имена высказываний в начале каждой строки, установив для kaldi_style_text значение False.

aligner.set_config(gratis_blank=True, kaldi_style_text=False) text = ["SALE OF THE HOTELS", "PROPERTY MANAGEMENT"] segments = aligner(speech, text) print(segments)

utt_0000 utt 0.37 1.72 -2.0651 SALE OF THE HOTELS

utt_0001 utt 4.70 6.10 -5.0566 PROPERTY MANAGEMENT

Скрипт espnet2/bin/asr_align.py использует аналогичный интерфейс. Чтобы выровнять высказывания:

Модель ASR и файлы конфигурации из предварительно обученной модели (например, из cachedir):

asr_config=<путь-к-модели>/config.yaml asr_model=<путь-к-модели>/valid.*best.pth

подготовить текстовый файл

wav="test_utils/ctc_align_test.wav" text="test_utils/ctc_align_text.txt" cat << EOF > ${text} utt1 THE SALE OF THE HOTELS utt2 IS PART OF HOLIDAY'S STRATEGY utt3 TO SELL OFF ASSETS utt4 AND CONCENTRATE utt5 ON PROPERTY MANAGEMENT EOF

получить выравнивание:

python espnet2/bin/asr_align.py --asr_train_config ${asr_config} --asr_model_file ${asr_model} --audio ${wav} --text ${text}

utt1 ctc_align_test 0.26 1.73 -0.0154 THE SALE OF THE HOTELS

utt2 ctc_align_test 1.73 3.19 -0.7674 IS PART OF HOLIDAY'S STRATEGY

utt3 ctc_align_test 3.19 4.20 -0.7433 TO SELL OFF ASSETS

utt4 ctc_align_test 4.20 4.97 -0.6017 AND CONCENTRATE

utt5 ctc_align_test 4.97 6.10 -0.3477 ON PROPERTY MANAGEMENT Скрипт можно перенаправить в файл segments, добавив аргумент --output segments.

Каждая строка содержит имя файла/высказывания, время начала и окончания высказывания в секундах, а также оценку достоверности; опционально также текст высказывания.

Оценка достоверности — это вероятность в логарифмическом пространстве, которая показывает, насколько хорошо было выровнено высказывание. При необходимости удалите плохие высказывания:

min_confidence_score=-7
# здесь мы предполагаем, что вывод был записан в файл `segments`
awk -v ms=${min_confidence_score} '{ if ($5 > ms) {print} }' segments

Дополнительную информацию см. в документации модуля. Рекомендуется использовать модели с RNN-кодировщиками (например, BLSTMP) для выравнивания больших аудиофайлов, вместо моделей Transformer, которые потребляют много памяти при работе с длинными аудиоданными. Частота дискретизации аудио должна соответствовать частоте данных, использованных при обучении; при необходимости отрегулируйте с помощью sox.

Также мы можем использовать этот инструмент для предоставления информации о сегментации на уровне токенов, если подготовим список токенов вместо списка высказываний в файле text. См. обсуждение по ссылке https://github.com/espnet/espnet/issues/4278#issuecomment-1100756463.

Цитирования

@inproceedings{watanabe2018espnet,
  author={Shinji Watanabe and Takaaki Hori and Shigeki Karita and Tomoki Hayashi and Jiro Nishitoba and Yuya Unno and Nelson {Enrique Yalta Soplin} and Jahn Heymann and Matthew Wiesner and Nanxin Chen and Adithya Renduchintala and Tsubasa Ochiai},
  title={{ESPnet}: End-to-End Speech Processing Toolkit},
  year={2018},
  booktitle={Proceedings of Interspeech},
  pages={2207--2211},
  doi={10.21437/Interspeech.2018-1456},
  url={http://dx.doi.org/10.21437/Interspeech.2018-1456}
}
@inproceedings{hayashi2020espnet,
  title={{Espnet-TTS}: Unified, reproducible, and integratable open source end-to-end text-to-speech toolkit},
  author={Hayashi, Tomoki and Yamamoto, Ryuichi and Inoue, Katsuki and Yoshimura, Takenori and Watanabe, Shinji and Toda, Tomoki and Takeda, Kazuya and Zhang, Yu and Tan, Xu},
  booktitle={Proceedings of IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
  pages={7654--7658},
  year={2020},
  organization={IEEE}
}
@inproceedings{inaguma-etal-2020-espnet,
    title = "{ESP}net-{ST}: All-in-One Speech Translation Toolkit",
    author = "Inaguma, Hirofumi  and
      Kiyono, Shun  and
      Duh, Kevin  and
      Karita, Shigeki  and
      Yalta, Nelson  and
      Hayashi, Tomoki  and
      Watanabe, Shinji",
    booktitle = "Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics: System Demonstrations",
    month = jul,
    year = "2020",
    address = "Online",
    publisher = "Association for Computational Linguistics",
    url = "https://www.aclweb.org/anthology/2020.acl-demos.34",
    pages = "302--311",
}
@article{hayashi2021espnet2,
  title={Espnet2-tts: Extending the edge of tts research},
  author={Hayashi, Tomoki and Yamamoto, Ryuichi and Yoshimura, Takenori and Wu, Peter and Shi, Jiatong and Saeki, Takaaki and Ju, Yooncheol and Yasuda, Yusuke and Takamichi, Shinnosuke and Watanabe, Shinji},
  journal={arXiv preprint arXiv:2110.07840},
  year={2021}
}
@inproceedings{li2020espnet,
  title={{ESPnet-SE}: End-to-End Speech Enhancement and Separation Toolkit Designed for {ASR} Integration},
  author={Chenda Li and Jing Shi and Wangyou Zhang and Aswin Shanmugam Subramanian and Xuankai Chang and Naoyuki Kamo and Moto Hira and Tomoki Hayashi and Christoph Boeddeker and Zhuo Chen and Shinji Watanabe},
  booktitle={Proceedings of IEEE Spoken Language Technology Workshop (SLT)},
  pages={785--792},
  year={2021},
  organization={IEEE},
}
@inproceedings{arora2021espnet,
  title={{ESPnet-SLU}: Advancing Spoken Language Understanding through ESPnet},
  author={Arora, Siddhant and Dalmia, Siddharth and Denisov, Pavel and Chang, Xuankai and Ueda, Yushi and Peng, Yifan and Zhang, Yuekai and Kumar, Sujay and Ganesan, Karthik and Yan, Brian and others},
  booktitle={ICASSP 2022-2022 IEEE International Conference on Acoustics, Speech and

*Примечание: в запросе не удалось определить основной язык текста.* **Shi Jiatong, Guo Shuai, Qian Tao, Huo Nan, Hayashi Tomoki, Wu Yuning, Xu Frank, Chang Xuankai, Li Huazhe, Wu Peter, Watanabe Shinji, Jin Qin. Muskits: an End-to-End Music Processing Toolkit for Singing Voice Synthesis.**

Muskits — это комплексный инструментарий для обработки музыки, предназначенный для синтеза поющего голоса. Авторы статьи представляют набор инструментов, который позволяет пользователям легко создавать и настраивать системы синтеза поющих голосов. Инструментарий включает в себя модули для анализа аудио, генерации спектрограмм, синтеза звука и управления параметрами голоса.

**Lu Yen-Ju, Chang Xuankai, Li Chenda, Zhang Wangyou, Cornell Samuele, Ni Zhaoheng, Masuyama Yoshiki, Yan Brian, Scheibler Robin, Wang Zhong-Qiu, Tsao Yu, Qian Yanmin, Watanabe Shinji. ESPnet-SE++: Speech Enhancement for Robust Speech Recognition, Translation, and Understanding.**

В статье представлен ESPnet-SE++, инструмент для улучшения качества речи, который может быть использован для повышения надёжности систем распознавания, перевода и понимания речи. Инструмент использует методы машинного обучения для удаления шума и искажений из аудиозаписей, что позволяет улучшить качество речи и повысить точность работы соответствующих систем.

**Gao Dongji, Shi Jiatong, Chuang Shun-Po, Garcia Leibny Paola, Lee Hung-yi, Watanabe Shinji, Khudanpur Sanjeev. EURO: ESPnet Unsupervised ASR Open-source Toolkit.**

EURO — это открытый инструментарий для автоматического распознавания речи (ASR), основанный на методах обучения без учителя. Инструментарий разработан как часть проекта ESPnet и предоставляет пользователям возможность создавать и обучать модели ASR без необходимости в размеченных данных.

**Peng Yifan, Tian Jinchuan, Yan Brian, Berrebbi Dan, Chang Xuankai, Li Xinjian, Shi Jiatong, Arora Siddhant, Chen William, Sharma Roshan и др. Reproducing Whisper-Style Training Using an Open-Source Toolkit and Publicly Available Data.**

Статья описывает попытку воспроизведения процесса обучения модели Whisper с использованием открытого инструментария и общедоступных данных. В статье представлены результаты экспериментов и анализ полученных результатов.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

ESPnet — это комплексный инструментарий для обработки речи. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/chenwuchen-espnet.git
git@api.gitlife.ru:oschina-mirror/chenwuchen-espnet.git
oschina-mirror
chenwuchen-espnet
chenwuchen-espnet
master