Naive implementation
Created by: ivanvikhrev
Сконвертировал модель для аудио файлов длиной 10 мс и 20 мс. Стало известно несколько вещей:
- При конвертации модели мы указываем размер входа, например, для 10 с мы указываем параметр --input_shape "(1, 1000, 161). Соответственно, минимальный размер входа для модели мы можем указать (1, 1, 161), что соответствует 10 мс.
- С моделью для 10 мс не работают функции из features.py, похоже, в параметрах там указана минимальная длина аудиофайла и она соответствует 20 мс.
- Для модели 20 мс попытался реализовать простое разбиение исходного аудиофайла на блоки с поочередной их обработкой и далее склейкой обратно в целостный аудиофайл. Однако возникла проблема: выход модели длиннее на 160 фреймов, чем исходный аудиофайл. Так, для аудиофайла длиной 5 с и частотой дискретизации (sample rate) 16 кГц мы получаем массив данных размером (5*16000, 1) или (80000, 1). При разбиении на блоки по 20 мс получаем 250 блоков по 320 фреймов. А на выходе после инференса этот же блок уже имеет размер 480.
- При склеивании обратно "как есть" получаем замедленное аудио с плохим качеством. Если пытаться вырезать по 320 фреймов из начала, конца или середины страдает качество, но скорость получается нормальная.