Обработка аудио в Octave на Ubuntu: чтение, запись и воспроизведение
Введение
Octave — свободная альтернатива Matlab на Linux. Он содержит функции для захвата, записи, воспроизведения и цифровой обработки аудиосигналов, которые применимы в развлечениях, науке, медицине и исследовании. В этом руководстве мы используем Octave v4.0.0 в Ubuntu и покажем базовые операции: чтение аудиофайлов, запись синусоидального сигнала и воспроизведение.
Важно: цель не научить пользоваться полнофункциональным аудиоредактором, а объяснить работу механизмов с точки зрения проектирования и аудиоинженерии.
Основные термины
- Сэмплинг (sampling): число отсчётов в секунду, измеряется в герцах (Гц). 1 строка: частота дискретизации — количество выборок в секунду.
- Каналы: моно — один столбец данных, стерео — два столбца.
- Frame / sample frame: набор значений всех каналов в один момент времени.
Требования
Перед началом установите Octave. В терминале Ubuntu выполните:
sudo apt-add-repository ppa:octave/stable
sudo apt-get update
sudo apt-get install octaveПроверьте версию Octave и рабочую директорию внутри приложения. Все примеры выполняются в терминальном окне Octave.
Шаг 1: Открытие Octave
Откройте Octave через меню приложений или по ярлыку. При необходимости измените рабочую папку через выпадающее меню File Browser.

Шаг 2: Получение информации о файле
Команда audioinfo показывает метаданные аудиофайла: длительность, частоту дискретизации, число каналов и формат.
>> info = audioinfo ('testing.ogg')
Пример использования: перед обработкой проверьте поля info.SampleRate, info.NumChannels и info.Duration.
Шаг 3: Чтение аудиофайла
В примерах используются файлы .ogg. Убедитесь, что файл находится в рабочем каталоге Octave.
>> file='yourfile.ogg'
>> [M, fs] = audioread(file)Переменная M — матрица с одной или двумя колонками (каналами). fs — частота дискретизации в герцах (например, 44100).



Опции audioread:
>> [y, fs] = audioread (filename, samples)
>> [y, fs] = audioread (filename, datatype)
>> [y, fs] = audioread (filename, samples, datatype)- samples — вектор [start, end] в сэмплах.
- datatype — тип возвращаемых данных; ‘native’ вернёт тип, используемый в файле.
Пример задания диапазона и native-формата:
>> samples = [1, fs]
>> [y, fs] = audioread (filename, samples)
>> [y,Fs] = audioread(filename,'native')Если datatype равен ‘native’, Octave вернёт данные в том же типе, в котором они сохранены в файле.
Шаг 4: Запись аудиофайла
Создание ogg-файла со синусоидой
Сгенерируем файл cosine.ogg со строгой частотой 440 Гц (нота A), частотой дискретизации 44100 Гц и длительностью 10 секунд.
>> filename='cosine.ogg';
>> fs=44100;
>> t=0:1/fs:10;
>> w=2*pi*440*t;
>> signal=cos(w);
>> audiowrite(filename, signal, fs);Это создаст файл cosine.ogg в рабочей директории с одноканальным сигналом.

Если прочитать cosine.ogg с помощью audioread, вы получите матрицу значений для дальнейшей обработки. В следующем уроке можно сделать стереофайл, записав два канала.
Шаг 5: Воспроизведение аудиофайла
Octave содержит простой аудиоплеер для тестов. Пример создания и запуска плеера:
>> [y,fs]=audioread('yourfile.ogg');
>> player=audioplayer(y, fs, 8)
scalar structure containing the fields:
BitsPerSample = 8
CurrentSample = 0
DeviceID = -1
NumberOfChannels = 1
Running = off
SampleRate = 44100
TotalSamples = 236473
Tag =
Type = audioplayer
UserData = [](0x0)
>> play(player);Игровой цикл можно приостанавливать/останавливать вызовом stop(player) или pause(player).
Частые ошибки и обходы
- Файл не найден: убедитесь, что рабочая директория Octave совпадает с расположением файла или укажите полный путь.
- Неподдерживаемый формат: установите дополнительные кодеки в систему или сконвертируйте файл (ffmpeg или sox).
- Звук не воспроизводится: проверьте устройство вывода звука и права доступа к ALSA/PulseAudio.
Альтернативные подходы
- Python + librosa/soundfile — быстрый скриптовый путь для анализа и ML-прототипов.
- Audacity — удобный GUI-редактор для визуальной манипуляции и экспорта.
- Matlab — если требуется коммерческая поддержка и дополнительные тулбоксы.
Мини-методология для проектов с Octave и аудио
- Определите цель: анализ, синтез, тестирование устройства.
- Подготовьте данные: конвертируйте в стандартную частоту 44100 или 48000 Гц.
- Инструментируйте код: храните метаданные (SampleRate, NumChannels, Duration).
- Тестируйте на краевых случаях: очень короткие файлы, многоканальные, нестандартный битрейт.
- Документируйте форматы вывода и требования к оборудованию.
Рольовые чек-листы
Для исследователя:
- Проверить метаданные audioinfo
- Прочитать аудио в переменную и сохранить копию
- Сохранить версии с разными частотами дискретизации
Для разработчика ПО:
- Обернуть операции чтения/записи в функции
- Добавить обработку ошибок для отсутствующих файлов
- Написать unit-тесты на чтение диапазонов samples
Для саунд-дизайнера:
- Быстро генерировать тональные сигналы (sine, cosine)
- Экспортировать в требуемый формат для DAW
- Проверять моно/стерео совместимость
Критерии приёмки
- Успешное чтение файла: audioread возвращает массив и частоту дискретизации.
- Правильная запись: audiowrite создаёт файл, который корректно открывается внешними плеерами.
- Воспроизведение: audioplayer запускается и слышен звук на целевом устройстве.
Факт-бокс: ключевые числа
- Стандартная частота: 44100 Гц — часто используется для аудио высокого качества.
- Частота тона A: 440 Гц — эталон музыкальной ноты A4.
- Длительность примера: 10 с в примере синусоиды.
Когда этот подход не подходит
- Если нужны низкоуровневые операции с задержкой в реальном времени, Octave может быть не лучшим выбором; лучше C/C++ с ALSA/PortAudio.
- Для сложной спектральной обработки с визуализацией и интерактивностью удобнее использовать специализированные DAW или Python-инструменты.
Краткий пример рабочего сценария
- Скопировать тестовый ogg-файл в рабочую папку Octave.
- Проверить info = audioinfo(‘file.ogg’).
- [y,fs] = audioread(‘file.ogg’);
- player = audioplayer(y,fs,8); play(player);
- При изменениях сигналов — audiowrite(‘out.ogg’, y_mod, fs);
1-строчный глоссарий
- audioread — функция чтения аудиофайлов; возвращает матрицу сэмплов и частоту дискретизации.
- audiowrite — функция записи массива сэмплов в аудиофайл.
- audioplayer — объект-плеер для воспроизведения аудиоданных.
Заключение
Octave предоставляет достаточный набор функций для базовой работы со звуком: чтение, запись, синтез простых сигналов и проигрывание. Этот урок даёт основу для дальнейшего изучения фильтрации, анализа спектра и разработки звуковых прототипов.
Краткое резюме — проверьте метаданные, используйте audioread/audiowrite и тестируйте воспроизведение на целевых устройствах. В следующих материалах можно рассмотреть стереозапись, фильтры и визуализацию спектра.
Важно: если вы сталкиваетесь с несовместимостью форматов, используйте ffmpeg/sox для конвертации перед обработкой в Octave.
Похожие материалы
Herodotus: механизм и защита Android‑трояна
Включить новое меню «Пуск» в Windows 11
Панель полей сводной таблицы в Excel — руководство
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить