Добавить в корзинуПозвонить
Найти в Дзене
Мой канал

MATLAB. Цифровая обработка сигналов \ 2 - Извлечение голоса из музыкального файла

В этой работе вы научитесь создавать базовый цифровой музыкальный синтезатор и научитесь использовать его для воспроизведения традиционной песни в трехголосной аранжировке. fs = 2e3; t = 0:1/fs:0.3-1/fs; l = [0 130.81 146.83 164.81 174.61 196.00 220 246.94]; m = [0 261.63 293.66 329.63 349.23 392.00 440 493.88]; h = [0 523.25 587.33 659.25 698.46 783.99 880 987.77]; note = @(f,g) [1 1 1]*sin(2*pi*[l(g) m(g) h(f)]'.*t); mel = [3 2 1 2 3 3 3 0 2 2 2 0 3 5 5 0 3 2 1 2 3 3 3 3 2 2 3 2 1]+1; acc = [3 0 5 0 3 0 3 3 2 0 2 2 3 0 5 5 3 0 5 0 3 3 3 0 2 2 3 0 1]+1; song = []; for kj = 1:length(mel) song = [song note(mel(kj),acc(kj)) zeros(1,0.01*fs)]; end song = song'/(max(abs(song))+0.1); % To hear, type sound(song,fs) tune = timetable(seconds((0:length(song)-1)'/fs),song); Откройте Signal Analyzer и перетащите Timetable из браузера Workspace в таблицу Signal. Нажмите Display Grid ▼, чтобы создать сетку дисплеев два на два. Выберите два верхних дисплея и нижний левый дисплей и нажмите кнопк

В этой работе вы научитесь создавать базовый цифровой музыкальный синтезатор и научитесь использовать его для воспроизведения традиционной песни в трехголосной аранжировке.

fs = 2e3;
t = 0:1/fs:0.3-1/fs;
l = [0 130.81 146.83 164.81 174.61 196.00 220 246.94];
m = [0 261.63 293.66 329.63 349.23 392.00 440 493.88];
h = [0 523.25 587.33 659.25 698.46 783.99 880 987.77];
note = @(f,g) [1 1 1]*sin(2*pi*[l(g) m(g) h(f)]'.*t);
mel = [3 2 1 2 3 3 3 0 2 2 2 0 3 5 5 0 3 2 1 2 3 3 3 3 2 2 3 2 1]+1;
acc = [3 0 5 0 3 0 3 3 2 0 2 2 3 0 5 5 3 0 5 0 3 3 3 0 2 2 3 0 1]+1;
song = [];
for kj = 1:length(mel)
song = [song note(mel(kj),acc(kj)) zeros(1,0.01*fs)];
end
song = song'/(max(abs(song))+0.1);
% To hear, type sound(song,fs)
tune = timetable(seconds((0:length(song)-1)'/fs),song);

Откройте Signal Analyzer и перетащите Timetable из браузера Workspace в таблицу Signal.

Нажмите Display Grid ▼, чтобы создать сетку дисплеев два на два.

Выберите два верхних дисплея и нижний левый дисплей и нажмите кнопку Spectrum, чтобы добавить представление спектра.

Выберите правый нижний дисплей, щелкните Time-Frequency, чтобы добавить представление спектрограммы, и щелкните Time, чтобы удалить представление времени.

Перетащите композицию на все четыре дисплея.

Выберите правый нижний дисплей и на вкладке Spectrogram укажите временное разрешение 0,31 секунды (310 мс) и 0% перекрытия между соседними сегментами. Установите пределы мощности -50 дБ и -10 дБ.

-2

На вкладке Analyzer трижды нажмите Duplicate, чтобы создать три копии композиции. Переименуйте копии в "Высокий", "Средний" и "Низкий", дважды щелкнув по столбцу "Name" в таблице "Signal". Переместите копии на два верхних и левый нижний дисплеи. Предварительная обработка дублированных сигналов с помощью фильтров:

  1. Выберите высокий сигнал, щелкнув его имя в таблице сигналов. На вкладке Analyzer щелкните Highpass. На появившейся вкладке Highpass введите частоту полосы пропускания 450 Гц и увеличьте крутизну до 0,95. Нажмите Highpass.
  2. Выберите средний сигнал, щелкнув его имя в таблице сигналов. На вкладке Analyzer нажмите Preprocessing ▼ и выберите Bandpass. На появившейся вкладке Bandpass введите 230 Гц и 450 Гц в качестве нижней и верхней частот полосы пропускания соответственно. Увеличьте крутизну до 0,95. Нажмите Bandpass.
  3. Выберите низкий сигнал, щелкнув его имя в таблице сигналов. На вкладке Analyzer нажмите Lowpass. На появившейся вкладке Lowpass введите частоту полосы пропускания 230 Гц и увеличьте крутизну до 0,95. Нажмите Lowpass.
-3

На каждом из трех дисплеев, содержащих отфильтрованные сигналы:

1. Удалите исходный сигнал, сняв флажок рядом с его названием.

2. На вкладке Display (Отображение) нажмите Time-Frequency (Время-частота), чтобы добавить представление спектрограммы, и нажмите Time (Время), чтобы удалить представление времени.

3. На вкладке Spectrogram укажите временное разрешение 0,31 секунды и 0% перекрытия между соседними сегментами. Установите пределы мощности -50 дБ и -10 дБ.

-4

Выберите три отфильтрованных сигнала, щелкнув по их столбцу Name в таблице Signal. На вкладке Анализатор нажмите кнопку Export и сохраните сигналы в MAT-файл с именем music.mat. Загрузите этот файл в рабочую область В MATLAB. Постройте спектры трех сигналов.

load music
pspectrum(low)
hold on
pspectrum(medium)
pspectrum(high)
hold off
-5

Чтобы услышать разные голоса, введите:

sound(low.low,fs), pause(5), sound(medium.medium,fs), pause(5), sound(high.high,fs)
% To hear the different voices, type
% sound(low.low,fs), pause(5), sound(medium.medium,fs), pause(5), sound(high.high,fs)