Об этом проекте

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 и варианты с расширенной поддержкой горячих слов.