- •Лабораторна робота № 6 Тема: ”Дискретні сигнали в matlab. Одержання даних із зовнішніх джерел”
- •Читання wav-файлів
- •Вправа 1
- •Зауваження
- •Запис wav-файлів
- •Відтворення звуку
- •Функція sound
- •Функція soundsc
- •Функція wavplay
- •Запис звуку
- •Готові записи сигналів
- •Пакет розширення Data Acquisition
- •Вправа 2
- •Література
Функція wavplay
Нарешті, третя функція, призначена для відтворення звуку, має ім'я wavplay:
wavplay(у, Fs, 'mode')
Вхідні параметри у і Fs мають той же зміст, що й у попередніх функцій, а параметр 'mode' керує режимом відтворення. Цей параметр може приймати два значення:
- 'sync' — синхронний режим, що означає, що функція поверне керування інтерпретатору MATLAB тільки після закінчення звуку;
- 'async' — асинхронний режим, при якому функція передає дані для відтворення звуковим драйверам Windows і відразу ж повертає керування системі MATLAB, не чекаючи закінчення звуку.
Параметри 'mode' і Fs при виклику можна опускати, при цьому використовуються їхні значення за замовчуванням: Fs = 11025 і 'mode' = 'async'.
Синхронний режим дозволяє організувати в MATLAB-програмі видачу декількох звуків підряд, не піклуючись про розрахунок і дотримання тимчасових інтервалів між відповідними командами. В асинхронному ж режимі можна одночасно з відтворенням звуку продовжувати виконання програми. На жаль, при цьому немає можливості програмним шляхом перевірити, чи закінчилося відтворення звуку.
ЗАУВАЖЕННЯ
Така програмна перевірка буде можлива, якщо для відтворення звуку скористатися засобами пакета Data Acquisition (коротка інформація про його можливості приводиться далі).
Запис звуку
Функція wavrecord дозволяє записати звук у змінну MATLAB за допомогою звукової карти комп'ютера:
у = wavrecord(n, Fs, ch, 'dtype')
Тут n — число записуваних відліків, Fs — частота дискретизації в герцах, ch — число каналів запису, 'dtype' — тип записуваних даних.
Результат, що повертається, у — матриця, кожен стовпець якої відповідає одному каналу запису. При стереозаписі перший стовпець — лівий канал, другий — правий.
Для параметра 'dtype' можливі наступні значення:
- 'double' — 16-бітовий запис, дані масштабуються до діапазону -1...1 і представляються в 8-байтовом форматі з плаваючою точкою;
- 'single' — 16-бітовий запис, дані масштабуються до діапазону -1...1 і представляються в 4-байтовом форматі з плаваючою точкою;
- 'int16' — 16-бітовий запис, дані представляються в двухбайтовому цілочисленому форматі (діапазон -32 768...32 767);
- 'uint8' — 8-бітовий запис, дані представляються в однобайтовому беззнаковому целочисленому форматі (діапазон 0...255, нульовій напрузі на вході відповідає значення 128);
Вхідні параметри 'dtype', ch і Fs можна опускати, при цьому будуть використовуватися їхні значення за замовчуванням: Fs = 11025, ch = 1, 'dtype' = 'double'.
Готові записи сигналів
У розділі Audio базової бібліотеки MATLAB і в пакеті розширення Signal Processing мається кілька готових записів сигналів, збережених у виді Мат-файлів. Ці сигнали використовуються в якості вихідних даних у прикладах, що приводяться в документації, і демонстраційних програмах. Можливо, вам вони придадуться для тестування власних програм і алгоритмів. Зведення про наявні сигнали приведені в табл. 6.1.
Таблиця 6.1. Записи сигналів, що маються в MATLAB
Ім'я файлу |
Пакет |
Ім'я перемінної |
Розмір |
Частота дискретизації, Гц |
Характер звуку |
chirp.mat |
MATLAB |
у |
13 129 (1,6 с) |
8192 |
Імпульси з мінливою частотою |
gong.mat |
MATLAB |
у |
42028 (5.1 с) |
8192 |
Удар гонга |
handel.mat |
MATLAB |
у |
73 113 (8,9 с) |
8192 |
Хор |
laughter.mat |
MATLAB |
у |
52 634 (6,4 с) |
8192 |
Сміх |
splat.mat |
MATLAB |
у |
10 001 (1,2 с) |
8192 |
Тон з мінливою частотою, потім звук удару |
train.mat |
MATLAB |
у |
12 880 (1,5 с) |
8192 |
Гудок потяга |
mtlb.mat |
SP |
mtlb |
4001 (0,54 с) |
7418 |
Вимовлене слово «MATLAB» |
vcosig.mat |
SP |
vcosig |
19 661 (2,4 с) |
8192 |
Даний сигнал має дуже забавну спектрограму |