WAV-пакет: разбиение длинных файлов под лимит приема
Шесть исходных WAV превращаются в девять самостоятельных файлов не длиннее 10 секунд; обратная сборка PCM проверена побайтно.
Задача
При передаче записей в сервис с лимитом длительности длинный файл нельзя просто обрезать. Нужны самостоятельные WAV с правильными заголовками, порядком фрагментов и сохранением всего сигнала.
Последний фрагмент сохраняет остаток записи
Запись длиной 30 секунд делится на три десятисекундных файла, короткая запись остаётся одним фрагментом. Для каждого выхода пересчитываются размеры WAV, а порядок сохраняется в манифесте. Обратная сборка и SHA-256 проверяют, что дробление не потеряло остаток и не переставило части, даже когда все файлы по отдельности открываются.
Что сделано
Я создал шесть PCM-источников, разделил их на девять WAV и проверил восстановление исходных байтов.
Шесть WAV длительностью 1, 2, 4, 10, 20 и 30 секунд реально разделены на девять валидных частей не длиннее 10 секунд. В каждом заголовке пересчитаны размеры RIFF/data. Обратная сборка всех шести PCM-потоков совпала с исходными байтами; SHA-256 и порядок частей записаны в манифесте.
- index.html
- source.json
- source.csv
- result.json
- result.csv
- engine.js
- checks.json
- style.css
- tone-1s.wav
- tone-2s.wav
- tone-4s.wav
- tone-10s.wav
- tone-20s.wav
- tone-30s.wav
- timings.json
- segmentation.json
- tone-1s-part-1.wav
- tone-2s-part-1.wav
- tone-4s-part-1.wav
- tone-10s-part-1.wav
- tone-20s-part-1.wav
- tone-20s-part-2.wav
- tone-30s-part-1.wav
- tone-30s-part-2.wav
- tone-30s-part-3.wav
Открыть работающий материал · Контрольные примеры CSV · Повторить проверку · Модель и исходные условия