Это более общий вопрос RTFM DSP, заданный кем-то, кто очень хорошо разбирается в аудиопроизводстве и программном обеспечении, но является новичком в разработке аудиопрограмм и касается разницы в размере между несжатыми (wav, caf, aiff) файлами (частота дискретизации 44,1, 16бит) на диске, в сравнении с фактическими значениями этого аудио в памяти.
Например, у меня есть тестовый WAV-файл, который в соответствии с MacOS составляет семь минут и четырнадцать секунд (7:14) и имеет размер 83,4 МБ.
Если я импортирую этот файл в свой проект и открою файл как AKAudioFile
, то проверим свойство .floatChannelData
(которое представляет собой массив из двух массивов, по одному для каждого канала (два стандарта для стереофайл)), этот файл, в частности, в общей сложности примерно 23 миллиона операций с плавающей запятой, около 180 мегабайт в куче.Это имеет смысл, поскольку стандартный объект Float
в Swift представляет собой 32-разрядное число с плавающей запятой и 8 байтами на число с плавающей запятой.
Я понимаю размер, однако я надеюсь, что смогу работать с чем-то ближе к 16-битному, как, по крайней мере, в моих приложениях, я просто анализирую этот звук, не обрабатывая его каким-либо образом, и даже после некоторого базовогоОптимизация и предотвращение глубоких копий, любой звук, превышающий 10 минут или около того, уходит на использование памяти в куче.
Согласно этому SO вопросу есть несколько новых способов конвертировать 32-битные в 16-ти, но, честно говоря, это похоже на неправильный / избыточный подход к тому, что я хочу сделать.Например, если я просто ссылка floatChannelData
из моего AKAudioFile
, он автоматически добавляет около 300 мегабайт в кучу!Даже без копирования, добавления и т. Д.
Для более опытных разработчиков аудиосигналов DSP, есть ли ресурсы для хорошего управления кучей / стеком для больших чисел с плавающей запятой в вашей программе?Может ли AudioKit записывать вещи на 16 бит?В настоящее время я занимаюсь обработкой на C и C ++, поэтому я чувствую себя очень комфортно, выполняя любые математические вычисления или преобразования, если это более продуктивно.Любые предложения так благодарны, спасибо!