WAV-пакет: разбиение длинных файлов под лимит приема
Шесть исходных WAV превращаются в девять самостоятельных файлов не длиннее 10 секунд; обратная сборка PCM проверена побайтно.
Задача и принятое решение
При передаче записей в сервис с лимитом длительности длинный файл нельзя просто обрезать. Нужны самостоятельные WAV с правильными заголовками, порядком фрагментов и сохранением всего сигнала.
Я разделил PCM только по границе отсчета и пересчитал RIFF/data для каждого фрагмента. Манифест хранит исходный файл, номер части и диапазон отсчетов. После разрезания части собираются обратно и сравниваются с исходным PCM без потерь.
Использованы шесть авторских тональных PCM-файлов. Проверена подготовка аудио к ограниченному приему, а не распознавание речи или качество внешнего ASR.
Проверить решение
Измените исходные строки или параметры и пересчитайте результат. Данные остаются в этой странице.
| Источник | Часть | Первый Отсчет | Отсчетов | Секунд | Байт WAV |
|---|---|---|---|---|---|
| tone-1s.wav | 1 | 0 | 8000 | 1 | 16044 |
| tone-2s.wav | 1 | 0 | 16000 | 2 | 32044 |
| tone-4s.wav | 1 | 0 | 32000 | 4 | 64044 |
| tone-10s.wav | 1 | 0 | 80000 | 10 | 160044 |
| tone-20s.wav | 1 | 0 | 80000 | 10 | 160044 |
| tone-20s.wav | 2 | 80000 | 80000 | 10 | 160044 |
| tone-30s.wav | 1 | 0 | 80000 | 10 | 160044 |
| tone-30s.wav | 2 | 80000 | 80000 | 10 | 160044 |
| tone-30s.wav | 3 | 160000 | 80000 | 10 | 160044 |
Исходный набор
Авторский набор. В timings.json записан фактически выполненный локальный замер кода; тариф модели и сеть в него не входят.
Изменить входные строки
Посмотреть исходные строки
| Файл | Частота | Каналов | Бит | Байт Данных | Байт Файла |
|---|---|---|---|---|---|
| tone-1s.wav | 8000 | 1 | 16 | 16000 | 16044 |
| tone-2s.wav | 8000 | 1 | 16 | 32000 | 32044 |
| tone-4s.wav | 8000 | 1 | 16 | 64000 | 64044 |
| tone-10s.wav | 8000 | 1 | 16 | 160000 | 160044 |
| tone-20s.wav | 8000 | 1 | 16 | 320000 | 320044 |
| tone-30s.wav | 8000 | 1 | 16 | 480000 | 480044 |
Что получилось
Шесть WAV длительностью 1, 2, 4, 10, 20 и 30 секунд реально разделены на девять валидных частей не длиннее 10 секунд. В каждом заголовке пересчитаны размеры RIFF/data. Обратная сборка всех шести PCM-потоков совпала с исходными байтами; SHA-256 и порядок частей записаны в манифесте.
Выполненная проверка
| Проверка | Результат |
|---|---|
| Девять частей сохраняют все 67 секунд и лимит 10 | Пройдена |
| Baseline оставляет шесть файлов, включая 30 секунд сверх лимита | Пройдена |
| Лимит 7 секунд меняет разбиение, но не теряет отсчеты | Пройдена |
Сегментатор рассчитан на приложенный PCM WAV с 44-байтовым заголовком. Он не ищет паузы речи и не поддерживает произвольные дополнительные WAV-chunks. Локальные времена относятся к расчету плана сегментов, не к ASR.
Скачать материалы и повторить проверку
source.json · source.csv · result.json · result.csv · engine.js · verify.cjs · checks.json · style.css · benchmark.cjs · tone-1s.wav · tone-2s.wav · tone-4s.wav · tone-10s.wav · tone-20s.wav · tone-30s.wav · segment-wav.cjs · 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
Локальная проверка: node verify.cjs. Нужен Node.js; сетевые обращения не выполняются.