Голосовые системы

Контроль качества версии Fish Audio

Проверено 17.09.2026. Это проверка созданного файла и снимка кода, не проверка работающего сервиса и не оценка голоса человеком на слух.

Исходники и синтез

  • Основа сюжета и анимации — существующий 19-сценный ролик по снимку 772de4a714ae6c5abea91946e85a1953ee919ec3; текущий HEAD рабочего репозитория при сборке — f0a6eac965c7d6be8a353265775b676248855905. Исходники webrtc-komaroff и runtime не менялись.
  • Из локальный источник извлечён фрагмент 8,55–27,95 с: 19,40 с, mono PCM 44,1 кГц, SHA-2569415f693598c54d004b6ac20d7a750527a8f5321281f74a843cadc86917a63c0`. Метод и текст — в reference-transcript.md. Пользователь подтвердил наличие разрешения на использование записи и голоса.
  • Fish Audio Python SDK 1.3.0, модель s2.1-pro-free, разовый ReferenceAudio с образцом и транскрипцией, скорость 1.14, формат MP3. Получены 50 непустых MP3 для 50 фраз. Сохраняемая модель голоса не создавалась. Ключ вводился скрыто; проверка файлов варианта по префиксу ключа не обнаружила его в каталоге.
  • PCM master: 48 кГц mono, 6747 кадров × 1600 отсчётов, 224,900 с. Все 19 сцен следуют без пробелов/перекрытия. SRT содержит 50 блоков; максимальная высота по измерению шрифта — две строки. TypeScript tsc --noEmit прошёл.
  • Быстрая ASR-сверка локальным faster-whisper small/CPU/int8: 50 отдельных MP3 проверены на соответствие своим фразам; 48 дали word-match ratio ≥0,70. Два низких значения относятся к фонетическим записям WebRTC и HTTP, которые ASR вывел как аббревиатуры/иные слоги. Для полной дорожки word-match ratio 0,875 (389 слов сценария против 381 распознанного). Эти показатели не доказывают точного произношения: ASR ошибается и при проверке длинной дорожки пропускал короткие фразы. Человеческое прослушивание не проводилось.

Видео и звук

  • Просмотрены ранний, средний и поздний контрольные кадры каждой из 19 сцен. Отдельно проверены в полном разрешении сцены 01, 09, 14, 19 и кадры уже закодированного MP4 в начале, середине и конце: содержание, субтитры и постоянная пометка о синтетической озвучке видны и не обрезаны. Контрольные листы — output/contact-1.jpg…contact-4.jpg; извлечённые кадры — output/qc/encoded-*.png.
  • Пилот output/pilot-with-audio.mp4: H.264/AAC, 1920×1080, 30 fps, ровно 30,000 с.
  • Финальный output/webrtc-komaroff-explainer-fish-pupkin.mp4: H.264 1920×1080, 30 fps, 6747 кадров, AAC mono 48 кГц, длительность обоих потоков 224,900 с. Размер около 29 MiB; SHA-256 2850b38842d05188e3389a04b98d6b8322cd2cc28e36335900647e8ddd39782d. ffmpeg -v error -i ... -f null - декодировал файл целиком без ошибок. Машинный результат — output/qc-result.json.
  • После нормализации FFmpeg volumedetect показал средний уровень −16,7 dB и максимум −1,4 dB. На пороге −40 dB обнаружены паузы около секунды на границах реплик; самая длинная — 1,054 с. Резких обрывов по длительности потоков не обнаружено. Субъективная громкость, тембр, похожесть и интонация на слух не оценивались.

Воспроизведение и ограничения

Команды приведены в README.md. При сборке использованы Node v22.14.0, Remotion 4.0.507, ffmpeg 6.1.1, Fish SDK 1.3.0; NODE_OPTIONS снят только для дочерних команд Node. Облачный синтез не воспроизводится без работающего Fish API и ключа; сохранённые MP3 позволяют пересобрать мастер, субтитры и видео без повторной передачи образца. Никакая проверка здесь не доказывает, что анимированные схемы отражают текущий deployment.

Исходник

Скачать Markdown · К материалам исследования