- •Загрузка сигналу
- •Перегляд графіку сигналу
- •Спектральний аналіз сигналу
- •Розрахунок фільтра
- •Перегляд характеристик фільтра
- •Фільтрація сигналу
- •Збереження результатів роботи
- •І. Робота зі звуковими файлами в середовищі matlab
- •1. Читання wav-файлів
- •2. Запис wav-файлів
- •3. Відтворення звуку
- •4. Готові записи сигналів
- •5. Ввід в комп’ютер звукового сигналу засобами Matlab
- •6. Перевірка якості введеного сигналу
- •II. Робота з пакетом sptool
- •1. Активация пакету та імпорт звукового файлу із середовища Matlab
- •2. Перегляд, прослуховування і збереження зображення форми звукового сигналу
- •3. Обчислення спектра звукового сигналу
- •4. Формування засобами spTool фільтра Кайзера
- •5. Фільтрація звукового сигналу отриманим фільтром
- •Хід роботи
- •I. Робота із звуковим файлом в середовищі matlab
- •II. Робота із звуковим файлом в середовищі spTool
- •Індивідуальні завдання
Збереження результатів роботи
Сеанс роботи з програмою SPTool можна зберегти за допомогою команди Save Session або Save Session As з меню File основного вікна програми. Файли сеансів мають розширення spt. Завантажити збережений сеанс можна командою Open Session меню File.
Крім того, можна експортувати сигнали, фільтри і спектри у вигляді структур даних. Для цього використовується команда File/Export з меню основного вікна програми SPTool. Після вибору даної команди з’явиться вікно Export from SPTool, яке показане на мал.10.
Мал.10. Вікно експорту даних.
В списку, що займає ліву частину цього вікна, необхідно вибрати об’єкти, що експортуються. Клікання на кнопці Export to Workspace проведе експорт відповідних структур даних в робочу область пам’яті MATLAB, а для їх запису в Мат-файл необхідно скористатися кнопкою Export to Disk.
І. Робота зі звуковими файлами в середовищі matlab
В програмі MATLAB передбачені засоби для відтворення і запису звуку, а також для роботи із звуковими файлами формату wav.
1. Читання wav-файлів
Для зчитування wav-файлів в MATLAB використовується функція wavread. В найпростішому вигляді вона має вигляд:
y = wavread (filename);
де filenam – ім’я звукового файлу (розширення .wav вказувати не обов’язково). В ім’я файлу потрібно включити повний шлях, за виключенням того випадку, коли файл знаходиться в каталозі MATLAB або в одному із каталогів, які входять до списку пошуку MATLAB.
В результаті виклику функції в змінну y буде поміщено весь вміст вказаного файлу. Рядки матриці y відповідають відлікам сигналу, стовпчики – каналам, яких в wav-файлі може бути декілька.
Рядок виклику функції закінчується крапкою з комою. Цей символ подавляє вивід результатів на екран. Якщо його забрати, то можна побачити біжучі по екрану ряди чисел – весь вміст матриці y. Як правило, вивід цієї інформації не представляє інтересу. Щоб перервати вивід чисел, потрібно натиснути Ctrl + C. Сама команда в цей момент уже виконана, матриця y сформована, в цьому випадку ми перериваємо тільки вивід інформації на екран.
В звукових файлах відліки сигналу представлені цілими числами, які лежать в діапазоні від -128 до +127 (8 біт на відлік) або -32768 до +32767 (16 біт на відлік).
Крім відліків сигналу, в wav-файлах зберігається ще й службова інформація про частоту дискретизації, кількість біт на відлік і т.п.
Взнати частоту дискретизації можна, використавши при виклику функції другий вихідний параметр:
[y, Fs] = wavread (filename);
При цьому змінна Fs отримує значення, яке рівне частоті дискретизації (Гц).
Щоб взнати, скільки рівнів сигналу міститься в звуковому файлі (точніше, число біт на відлік), потрібно добавити третій вихідний параметр:
[y, Fs, bits] = wavread (filename);
Ще два параметри, які потрібно знати наперед, це число відліків і каналів запису. Для отримання даної інформації потрібно викликати функцію wavread з двома вхідними параметрами. Перший – це теж саме ім’я файлу, другим повинен бути текстовий рядок size:
wavesize = wavread (filename, size);
На відміну від попередніх варіантів виклику функції, в даному випадку не відбувається зчитування самих звукових даних. Із wav-файлу витягується службова інформація, яка має вигляд двохелементного вектора-рядка. Перший елемент вектора містить число відліків, другий – число каналів.
Розглянемо роботу з wav-файлами на конкретному прикладі.
Візьмемо для цього файл tada.wav, який входить в стандартний набір звуків Windows.
Перш за все взнаємо число відліків та каналів:
>> wavesize = wavread ( C:\windows\media\tada , 1)
y =
0 0
Fs =
22050
bits =
16
Як видно, цей стереозапис (2 канали) містить 42752 відліки.
Далі потрібно отримати інформацію про частоту дискретизації та числа біт на відлік:
>> [y, Fs, bits] = wavread ( C:\windows\media\tada , size)
Отримані результати очевидні: частота дискретизації 22,05 кГц, використовується 16 біт на відлік (65536 рівнів сигналу). В нагрузку ми отримали значення першого відліку із обох каналів (вектор y).
Щоб взнати тривалість звучання файлу, для цього потрібно поділити число відліків (перший елемент отриманого раніше вектора wavesize) на частоту дискретизації Fs:
>> wavesize (1)/Fs
ans =
1.9389
Результат – тривалість звуку в секундах.
Щоб взнати, скільки пам’яті потрібно MATLAB для зберігання всього запису, потрібно помножити число відліків і число каналів, а потім збільшити результат ще у 8 разів. Можна зразу ж поділити значення на 1024, щоб отримати результат у кілобайтах, або на 10242, якщо результат потрібно отримати у мегабайтах:
>> prod (wavesize)*8/1024
ans =
668
Розхід пам’яті буде 668 Кбайт. Тепер можна зчитати файл в пам’ять повністю:
>> y = wavread ( C:\windows\media\tada );
Тепер весь вміст файлу зчитано в матрицю y. Перевіримо її розміри:
>> size (y)
ans =
42752 2
Як видно, розміри співпадають з отриманою раніше інформацією про файл: 42752 відліки (рядки), два канали (стовпці).
Щоби візуально оцінити звуковий файл, виведемо його у вигляді графіка – окремо для правого та лівого каналів стереозапису, використавши для цього функцію subplot:
>> subplot (2, 1, 1)
>> plot (y (:, 1))
>> subplot (2, 1, 2)
>> plot (y( :, 2))
Результат показано на мал.3.
Мал.3.
