Об этом проекте
SenseVoice — это речевая фундаментальная модель с несколькими возможностями понимания речи: автоматическое распознавание речи (ASR), определение разговорного языка (LID), распознавание эмоций в речи (SER) и обнаружение аудиособытий (AED).
Область применения выпущенного чекпоинта: SenseVoiceSmall поддерживает ASR и определение языка для китайского, кантонского, английского, японского и корейского языков, а также теги эмоций и аудиособытий. Более широкое исследование SenseVoice сообщает об обучении на более чем 400 000 часов и поддержке более 50 языков, но выпущенный малый чекпоинт охватывает пять вышеуказанных языков. Диаризация говорящих не является выходом самого чекпоинта; это составной конвейер FunASR с использованием отдельных моделей FSMN-VAD и CAM++.
Ключевые особенности
- Богатая транскрипция: теги распознавания эмоций и обнаружение звуковых событий, таких как фоновая музыка, аплодисменты, смех, плач, кашель и чихание.
- Эффективный вывод: неавторегрессионная сквозная архитектура для вывода с низкой задержкой. В эталонной конфигурации проекта сообщается, что SenseVoiceSmall работает более чем в 5 раз быстрее Whisper-Small и в 15 раз быстрее Whisper-Large при сопоставимом числе параметров.
- Скрипты и стратегии дообучения для адаптации к длиннохвостым данным.
- Конвейер развёртывания сервиса с поддержкой множества одновременных запросов; клиентские языки включают Python, C++, HTML, Java и C#.
Использование
Установите зависимости командой pip install -r requirements.txt. Примеры и составной путь диаризации требуют funasr>=1.3.26 (текущий путь развёртывания рекомендует funasr==1.4.14).
Базовый вывод использует AutoModel из FunASR с моделью iic/SenseVoiceSmall, опциональную сегментацию FSMN-VAD для длинного аудио, выбор языка (auto, zh, en, yue, ja, ko, nospeech), обратную нормализацию текста, динамическую пакетную обработку и объединение VAD. Вспомогательная функция rich_transcription_postprocess форматирует необработанный вывод.
Длинное аудио без VAD: передача часовой звуковой волны в один вызов generate может увеличить память энкодера намного больше размера аудио. Скрипт long_audio_no_vad.py декодирует через ffmpeg и запускает SenseVoice на фиксированных 30-секундных окнах с перекрытием 2 секунды, сохраняя необработанные выходные данные фрагментов в файл JSONL. Смещения окон описывают границы входных данных, а не временные метки слов, и фиксированные границы всё ещё могут влиять на распознавание вблизи разреза.
Диаризация говорящих: составляется через FunASR с FSMN-VAD, метками говорящих CAM++ и моделью пунктуации. Метки говорящих — это анонимные кластеры, а не распознанные личности. При output_timestamp=True временные метки представляют собой пары [start_ms, end_ms], выровненные один к одному со словами.
Экспорт и развёртывание на периферийных устройствах: документированы пути экспорта в ONNX и Libtorch, а среда выполнения llama.cpp/GGUF позволяет запускать SenseVoice как самодостаточный бинарный файл со встроенным FSMN-VAD и без Python во время выполнения, ориентированный на CPU и периферийные устройства.
Сервис и контейнеры: развёртывание FastAPI прослушивает порт 50000, а файлы Docker/Docker Compose поддерживают запуск на CPU и GPU с томом кэша моделей.
Дообучение: подготовка данных использует записи JSONL с полями key, source, target, language, emotion и event; вспомогательные команды преобразуют wav.scp и текстовые файлы в JSONL для обучения и валидации. Метки эмоций включают HAPPY, SAD, ANGRY, NEUTRAL, FEARFUL, DISGUSTED и SURPRISED; метки событий включают BGM, Speech, Applause, Laughter, Cry, Sneeze, Breath и Cough. Предоставлены скрипт finetune.sh и демонстрация webui.py.
Бенчмарки: проект сравнивает многоязычный ASR с Whisper на AISHELL-1, AISHELL-2, Wenetspeech, LibriSpeech и Common Voice, сообщая о преимуществах для распознавания китайского и кантонского языков. Для распознавания эмоций сообщаются конкурентоспособные результаты zero-shot на китайских и английских тестовых наборах с воспроизводимым контрактом оценки SER. Для обнаружения аудиособытий проводится сравнение с BEATS и PANN на ESC-50 с указанием разрывов по сравнению со специализированными моделями AED.
Экосистема: SenseVoice является частью семейства FunAudioLLM вместе с FunASR, Fun-ASR и CosyVoice. Сторонние интеграции включают развёртывание Triton/TensorRT, sherpa-onnx (поддержка многих языков программирования и платформ, таких как iOS, Android и Raspberry Pi), SenseVoice.cpp, streaming-sensevoice, OmniSenseVoice и варианты с расширенной поддержкой горячих слов.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.