Обработка и фильтрация речевых сигналов на базе MATLAB
Обработка и фильтрация речевых сигналов на базе MATLAB

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

краткое содержание:MATLABЭто очень мощное инженерно-практическое программное обеспечение для анализа и обработки данных.,Его очень удобно использовать для анализа, обработки и визуализации речевых сигналов. В этой статье рассказывается, как управлять звуковой картой для сбора речевых сигналов в среде MATLAB и методе обработки документов после сбора речевых сигналов.,Он также знакомит с принципом анализа спектра БПФ и его отображением, функциями, связанными с МАТЛАБ, а также разработкой и использованием фильтров. На этом основании,Корреляционный анализ и обработка реально собранного речевого сигнала, содержащего шум,В том числе прием и импорт голосовых сигналов,Анализ сигналов во временной и частотной областях,Сравнение различий до и после добавления шума,Анализ фильтров,Обработка голосовых спецэффектов. Результаты показывают, что использование MATLAB для обработки речевых сигналов очень просто, удобно и легко реализовать.

Ключевые слова: речевой сигнал; фильтр цифровой фильтрации;

1. Дизайн контента:

Развитие технологии обработки речевых сигналов отражается во всех аспектах жизни, а ее важность и практическое значение уже давно превзошли общественное воображение. Ряд разработок, от ранних машин BB до телефонов, от мобильных телефонов до мобильных телефонов и смартфонов, показывают, что голосовые сигналы. Технологии обработки быстро развиваются. В настоящее время достигнут большой прогресс в обработке речевых сигналов, и технология обработки речевых сигналов наиболее широко используется в компьютерных интерфейсах и взаимодействии человека с компьютером. Технология обработки речевых сигналов охватывает очень широкий диапазон, включая распознавание речи, идентификацию и определение говорящего, идентификацию и подтверждение языка, обнаружение и подтверждение ключевых слов, синтез речи и кодирование речи и т. д. В настоящее время наиболее перспективной и сложной технологией является технология распознавания речи. Эта технология имеет конкретные практические применения в реальной жизни. Она имеет широкий спектр приложений в областях взаимодействия человека и компьютера, таких как навигация транспортных средств, видеонаблюдение и сетевое видео. Среди них высокопроизводительные системы распознавания непрерывной речи и речи с большим словарным запасом являются передовыми представителями современной технологии распознавания речи, в то же время точное распознавание речевых сигналов также является важной задачей, которую необходимо срочно решить; В данной статье в качестве исследовательского проекта выбрана технология обработки речи, что является необычной попыткой. Кроме того, MATLAB используется для проведения ряда исследовательских процессов. MATLAB — мощное вычислительное программное обеспечение. Многие технологии можно очень удобно и быстро обрабатывать в MATLAB. На этот раз соответствующий проект фильтра был завершен в MATLAB, поскольку MATLAB очень прост и быстр в настройке параметров, что значительно снижает рабочую нагрузку исследователя, а также очень полезно для оптимизации фильтра. Вот задачи данного проекта:

1. Быть знакомым и освоить функции, связанные с записью, воспроизведением, хранением и чтением звука (волн) в MATLAB.

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

3. Возьмите 8000 и 16000 фрагментов данных соответственно для спектрального анализа, чтобы получить амплитудный и фазовый спектр. Сравните сходства и различия между ними и проанализируйте причины. Используйте оконную функцию и метод билинейного преобразования для проектирования.

4. Для телефонного канала (до 3500 Гц) спроектируйте КИХ или БИХ-фильтр для фильтрации, измените частоту дискретизации на 7000 Гц/с и проведите спектральный анализ для получения амплитудного и фазового спектра.

5. Отфильтруйте фоновый шум звука, сохраните все обработанные данные в виде звукового файла и сравните их с исходным звуком.

2. Принципы проектирования

1. Сбор голосовых сигналов

Чтобы преобразовать исходный аналоговый речевой сигнал в цифровой сигнал, необходимо выполнить дискретизацию и квантование для получения цифрового речевого сигнала, дискретного по времени и амплитуде. А поскольку MATLAB может обрабатывать только аудиосигналы, оканчивающиеся на «.wav», при записи звука, если формат не совпадает, вам необходимо использовать программное обеспечение Format Factory для преобразования формата. А при чтении речевого сигнала через программу [x,fs,bits]=wavread(’bishe.wav’) в MATLAB по умолчанию fs=44100Гц, поэтому частота настройки 8000Гц.

2. Спектральный анализ речевых сигналов

Сначала нарисуйте форму сигнала речевого сигнала во временной области, а затем выполните быстрое преобразование Фурье речевого сигнала, чтобы получить спектральные характеристики сигнала, тем самым углубляя понимание спектральных характеристик.

3. Спроектируйте цифровой фильтр и получите его частотную характеристику.

Показатели производительности каждого фильтра:

(1) Показатели эффективности фильтра нижних частот: fb=1000 Гц, fc=1200 Гц, As=100 д Б, Ap=1 д Б.

(2) Показатели эффективности фильтра верхних частот: fc=4800 Гц, fb=5000 Гц, As=100 д Б, Ap=1 д Б.

(3) Показатели производительности полосового фильтра: fp1=1200 Гц, fp2=3000 Гц, fsc1=1000 Гц, fsc2=3200 Гц, As=100 д Б, Ap=1 д Б.

Используйте метод оконной функции и метод билинейного преобразования для разработки трех фильтров, требуемых выше. В Matlab используйте такие функции, как масло и cheby1, для разработки БИХ-фильтров, используйте функцию freqz в Matlab, чтобы получить частотную характеристику каждого фильтра;

4. Отфильтруйте сигнал с помощью фильтра

Используйте различные фильтры, разработанные вами, для фильтрации собранных сигналов соответственно. В Matlab КИХ-фильтр использует функцию fftfilt для фильтрации сигнала, а БИХ-фильтр использует функциональный фильтр для фильтрации сигнала. Перед оцифровкой речевого сигнала необходимо выполнить предварительную фильтрацию сглаживания. Цель предварительной фильтрации состоит в том, чтобы подавить все компоненты с частотами, превышающими 1/2 (частоту дискретизации) в компонентах проводимости входного сигнала. в каждом поле, чтобы предотвратить наложение помех, во-вторых, подавить помехи частоты питания 50 Гц. Предварительный фильтр должен быть полосовым, а его верхняя и нижняя скорости среза соответственно равны и.

5. Сравните форму и спектр речевого сигнала до и после фильтрации.

Затем одновременно нарисуйте форму сигнала и спектр до и после фильтрации в окне.

6. Воспроизведение голосового сигнала

В Matlab используйте соответствующую звуковую функцию для воспроизведения звука. Определите, как меняется звук до и после фильтрации. Установите приоритет построения модели эха. Задержка предыдущего ввода и текущего ввода накладываются для получения выходного сигнала, а очевидность эха связана с задержкой.

7. Фильтрация фонового шума

Запишите период фонового шума одинаковой продолжительности (энергия спектра сосредоточена в определенном небольшом диапазоне) и наложите его на речевой сигнал. Проанализируйте изменения в спектре сигнала до и после наложения и спроектируйте подходящий фильтр, который сможет фильтровать. убрать шум.

3. Процесс проектирования

Язык кода:javascript
копировать
1. Сбор голосового сигнала
fs = 8000;          % Частота дискретизации
duration = 2;        % Продолжительность времени (секунды) 
n = duration*fs;     % Количество точек отбора проб
t = (1:n)/fs;
%Создать файл записи: fs =8000
recObject = audiorecorder(fs, 16, 1);   
fprintf('Начать запись:\n');pause(0);
recordblocking(recObject, duration);
stop(recObject);
fprintf('Запись окончена\n');
play(recObject);        % Воспроизвести записанный звук
y = getaudiodata(recObject);
ymax = max(abs(y));      % нормализация
y = y/ymax;





2. Нарисуйте график формы сигнал, см. рисунок 1
audiowrite('audio1.wav', y, fs);      % Запись аудио 
figure(1);
plot(t, y);
xlabel('время/с');
ylabel('величина');
title('(a)fs = 8000');
Grid;

Рисунок 1. Диаграмма исходной звуковой волны

Наблюдая за графикой, мы обнаружили, что такое явление происходило в процессе записи: некоторые недопустимые точки появлялись в начале записи, а некоторые недопустимые точки появлялись и позже. Основная причина этого явления заключается в том, что при запуске записи реакция человека происходит медленнее, чем при запуске записи компьютером, что приводит к появлению некоторых недействительных точек. Недопустимые точки, которые появляются позже, в основном представляют собой действия, не имеющие звука. Поэтому, чтобы решить проблему появления недопустимых точек, нам нужно только перехватить положения допустимых точек отдельно, а затем перерисовать графику во временной области.

  1. Возьмите 8000 и 16000 данных соответственно для анализа спектра.

Во-первых, результаты предварительной обработки и анализа речевого сигнала показаны на рисунке 2.

Рис. 2. Анализ результатов предварительной обработки речевого сигнала

Выполните преобразование Фурье собранных речевых сигналов для анализа спектра и отобразите спектрограмму, чтобы наблюдать их соответствующие характеристики амплитудного спектра. Абсцисса спектрограммы не обрабатывалась на предмет соответствия, но суть ее спектральных характеристик все же сохранена. Из спектрограммы хорошо видно, что звук семпла преимущественно низкочастотный. Частота человеческих речевых сигналов обычно концентрируется до 1 к Гц. Из огибающей звукового спектра, согласно теореме дискретизации, ширина сигнала составляет примерно 1 к Гц. После воспроизведения речи исходный звук все еще можно четко услышать. нет явления сглаживания звука.

Проанализируйте 8000 фрагментов данных, как показано на рисунке 3.

Язык кода:javascript
копировать
y=audioread('C:\Users\Lenovo\Desktop\audio project\audio1.wav');
d=fft(y,8000);	%Выполнить преобразование БПФ для 8000 точек речевого сигнала.
subplot(2,2,1);
plot(abs(d));
xlabel('частота');
ylabel('величина');
title('8000-точечный амплитудный спектр');
grid;
subplot(2,2,2);
plot(angle(d));
xlabel('частота');
ylabel('angle(d)');
title('Фазовый спектр из 8000 точек');
grid;

Рисунок 3. Преобразование БПФ 8000 точек

Язык кода:javascript
копировать
Проанализируйте 16 000 данных, таких как Рисунок показано 4.
y=audioread('C:\Users\Lenovo\Desktop\audio project\audio1.wav');
d=fft(y,16000);	%Выполнить преобразование БПФ речевого сигнала
subplot(2,2,1);
plot(abs(d));
xlabel('частота');
ylabel('величина');
title('Амплитудный спектр 16000');
grid;
subplot(2,2,2);
plot(angle(d));
xlabel('частота');
ylabel('angle(d)');
title('16000 фазовый спектр');
grid;

Рисунок 4. Преобразование БПФ для 16 000 точек.

Из рисунка 4 видно, что амплитудный спектр и фазовый спектр точек 8000 и точек 16000 в основном одинаковы, но графические линии 8000 немного разрежены, чем у 16000. Следовательно, чем больше точек, тем плотнее линии. .

  1. Для телефонного канала (до 3500 Гц) спроектируйте КИХ или БИХ-фильтр для фильтрации, измените частоту дискретизации на 7000 Гц/с и проведите спектральный анализ для получения амплитудного и фазового спектра.

Спроектируйте фильтр нижних частот типа БИХ для телефонного канала, как показано на рисунке 5.

Язык кода:javascript
копировать
%Используйте кнопку для разработки БИХ-фильтра нижних частот.
rp=0.5;rs=60;   % коэффициент пульсации в полосе пропускания rp, минимальное затухание в полосе задерживания rs
Ft=7000;
Fp=1200;
Fs=2000;                                       
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;            % Найдите граничную частоту проектируемого аналогового фильтра.
[n,wn]=buttord(wp,ws,rp,rs,'s') %Порядок и частота среза фильтра нижних частот.
[b,a]=butter(n,wn,'s');         %Функция передачи фильтра
[bz,az]=bilinear(b,a,0.5); 
%Используйте билинейное преобразование для реализации преобразования частотной характеристики из домена S в домен Z.
% Характеристики фильтра нижних частот
figure(3);
[h,w]=freqz(bz,az);		%Используйте функцию freqz, чтобы найти частотную характеристику
subplot(2,1,1);
plot(w*fs/(2*pi),abs(h));	%Двумерная непрерывная графика
grid;
title('БИХ-фильтр нижних частот');
xlabel('\omega/\pi');
ylabel('амплитуда');
subplot(2,1,2);
plot(w/pi,20*log10(abs(h)));
grid;
title('БИХ-фильтр нижних частот');
xlabel('\omega/\pi');
ylabel('амплитуда');

Рисунок 5 Амплитудно-частотные характеристики БИХ-ФНЧ

Язык кода:javascript
копировать
%Используйте эллипорд для разработки БИХ-фильтра нижних частот, например Рисунок показано 6.
Fp=1200;
Fs=2000;
Ft=7000;
As=60;
Ap=0.5;
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
[n,wn]=ellipord(wp,ws,Ap,As,'s');
[b,a]=ellip(n,Ap,As,wn,'s');
[B,A]=bilinear(b,a,1);
[h,w]=freqz(B,A);		%Используйте функцию freqz, чтобы найти частотную характеристику
figure(2);
plot(w*Ft/pi/2,abs(h));
title('БИХ-фильтр нижних частот');
xlabel('частота');
ylabel('величина');
grid;

Рисунок 6. Использование эллипорда для расчета амплитудно-частотных характеристик БИХ-фильтра нижних частот.

Язык кода:javascript
копировать
5.Фильтровать записанный звук,нравиться Рисунок 7 показано.
fs=8000;
y=audioread('C:\Users\Lenovo\Desktop\audio project\audio1.wav');
f=filter(bz,az,y);    %фильтр
f1=fft(f,1024);
subplot(2,1,1)
plot(abs(f1));  Диаграмма временной области после %фильтра
title('Отфильтрованный амплитудный спектр');
grid;
subplot(2,1,2)
plot(angle(f1));    Диаграмма временной области после %фильтра
title('Отфильтрованный фазовый спектр');
grid;
audiowriter('C:\Users\Lenovo\Desktop\audio project\audio2.wav',f,fs);
% Сохраните отфильтрованный звук.

Рисунок 7. Фильтрация записанного звука

Фильтрация звука завершена, переходим к следующему шагу.

Язык кода:javascript
копировать
6. Сравните обработанный звук с исходным звуком, например Рисунок. Как показано в 8.
fs=8000;
y=audioread('C:\Users\Lenovo\Desktop\audio project\audio1.wav');
y1=audioread('C:\Users\Lenovo\Desktop\audio project\audio2.wav');
yx=fft(y);
yx1=fft(y1);
subplot(2,1,1)
plot(20*log10(abs(yx)));
title('Относительный амплитудный спектр до фильтрации');
subplot(2,1,2);
plot(20*log10(abs(yx1)));
title('Отфильтрованный спектр относительной амплитуды');

Рисунок 8. Относительный амплитудный спектр до и после фильтрации

Сравнивая два сигнала до и после фильтрации, их амплитуды в основном одинаковы, но исходный звук чище и естественнее, чем отфильтрованный, поскольку после того, как исходный звук проходит через фильтр нижних частот, он отфильтровывает высокие частоты. частотную часть сигнала, оставляя только низкую частоту.

Язык кода:javascript
копировать
7. Воспроизведение голосового сигнала
прозрачный
клк
[audio1,fs]=audioread('audio1.wav');
звук (аудио1, фс);
Пауза;
[audio2,fs]=audioread('audio2.wav');
звук (аудио2, фс);

Изменения звука: исходный звук обычно становится естественным и чистым, а отфильтрованный звук — глубоким и меланхоличным.

Воспроизводя отфильтрованную речь с помощью звуковой функции, мы можем обнаружить, что шум относительно слабый и слова «XX Университет науки и технологий» отчетливо слышны.

4. Заключение

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

В этой статье сначала используется MATLAB для завершения записи и чтения речи, устанавливается соответствующая частота дискретизации для выборки сигнала, рисуется форма исходного речевого сигнала во временной области, а также используется быстрое преобразование Фурье для получения формы волны речи. рисунок в частотной области; во-вторых, выполнить обработку шума над собранным речевым сигналом и нарисовать диаграмму формы сигнала во временной области и частотной области речевого сигнала после добавления шума;

Наконец, фильтр предназначен для фильтрации зашумленного речевого сигнала, и сравниваются изменения формы сигнала до и после фильтрации. На протяжении всего исследовательского процесса программное обеспечение MATLAB использовалось для реализации воспроизведения звука, отображения формы сигнала во временной области и отображения формы сигнала в частотной области. При дискретизации необходимо установить соответствующую частоту дискретизации, чтобы удовлетворить теореме дискретизации, чтобы затем можно было восстановить исходный звук, установив разумные параметры производительности и используя метод оконной функции и метод билинейного преобразования, конструкцию цифрового БИХ-фильтра; завершено.

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/141571.html Исходная ссылка: https://javaforall.cn

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose