Шесть исходных WAV превращаются в девять самостоятельных файлов не длиннее 10 секунд; обратная сборка PCM проверена побайтно.
О проекте
Задача
При передаче записей в сервис с лимитом длительности длинный файл нельзя просто обрезать. Нужны самостоятельные WAV с правильными заголовками, порядком фрагментов и сохранением всего сигнала.
Решение
Я разделил PCM только по границе отсчета и пересчитал RIFF/data для каждого фрагмента. Манифест хранит исходный файл, номер части и диапазон отсчетов. После разрезания части собираются обратно и сравниваются с исходным PCM без потерь.
Результат
Шесть 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
Инструменты и подход
Навыки
Содержание 3
Готовая работа
Последний фрагмент сохраняет остаток записи
Запись длиной 30 секунд делится на три десятисекундных файла, короткая запись остаётся одним фрагментом. Для каждого выхода пересчитываются размеры WAV, а порядок сохраняется в манифесте. Обратная сборка и SHA-256 проверяют, что дробление не потеряло остаток и не переставило части, даже когда все файлы по отдельности открываются.
Разбор и материалы
Вклад и команда
Я создал шесть PCM-источников, разделил их на девять WAV и проверил восстановление исходных байтов.
Ссылки и материалы
- index.html
- source.json
- source.csv
- result.json
- result.csv
- engine.js
- verify.cjs
- checks.json
- style.css
- benchmark.cjs
- segment-wav.cjs
- timings.json
- segmentation.json
- WAV-пакет: разбиение длинных файлов под лимит приема — исходная таблица.csv
9 ситуаций для сравнения.
- WAV-пакет: разбиение длинных файлов под лимит приема — проверка.txt
Критерии проверки этого решения.
- WAV-пакет: разбиение длинных файлов под лимит приема — паспорт.json
Контекст, ограничения, решение и данные.
- WAV-пакет: разбиение длинных файлов под лимит приема — инструкция.html
Как открыть и проверить рабочий разбор.
Загружаем комментарии…