Chuyển đến nội dung chính

[Matlab] Xử lý tín hiệu số- Phân tích đoạn âm thanh DTMF

[tintuc] 

Trong toán học, phép biến đổi Fourier rời rạc (DFT), đôi khi còn được gọi là biến đổi Fourier hữu hạn, là một biến đổi trong giải tích Fourier cho các tín hiệu thời gian rời rạc. Đầu vào của biến đổi này là một chuỗi hữu hạn các số thực hoặc số phức, làm biến đổi này là một công cụ lý tưởng để xử lý thông tin trên các máy tính. Đặc biệt, biến đổi này được sử dụng rộng rãi trong xử lý tín hiệu và các ngành liên quan đến phân tích tần số chứa trong một tín hiệu, để giải phương trình đạo hàm riêng, và để làm các phép như tích chập. Biến đổi này có thể được tính nhanh bởi thuật toán biến đổi Fourier nhanh (FFT).

Trong bài viết này sẽ hướng dẫn các bạn ứng dụng phép biến đổi FFT để phân tích âm thanh nút nhất DTFM.


Bản mã DTFM

Code chương trình chính

% Lay du lieu
[a,fs]=audioread('DTMF_dialing.ogg');
%[a,fs]=audioread('AmThanh.m4a');
N=length(a);
t=[0:N-1]/fs;
plot(t,a);
% Thong so Tach Am
Tyle=0.2;
GioiHan=10;
dodai=N;
Y=0; X=0;
kiemtra=0;
soluong=1;
KT=0;
KTY=1;
giatri=1;
biendo=max(a)*Tyle;
%% TACH AM THANH
%Khu bo doan dau k am thanh
KTbatdau=0;
for i=1:dodai
 if KTbatdau==0
    if ((a(i)<-biendo)||(a(i)> biendo));
    Batdau=i;
    i=dodai;
    KTbatdau=1;
    end
 end
end
%%
for i=Batdau:dodai
if ((a(i)<-biendo)||(a(i)> biendo));
    kiemtra=0;
    KT=0;
   
    if KTY==0
     X(soluong)=i;
     KTY=1;
    end
else
    kiemtra=kiemtra+1 ;
    if (kiemtra>GioiHan)&&(KT==0)    
    KT=1;
    KTY=0;
    giatri=i;
    Y(soluong)=i-GioiHan+1;
    soluong=soluong+1;
    end
end
end
%Bo doan cuoi khong am thanh
soluong=soluong-1;
%Xu ly am thanh bat dau
if X(1)<1
   X(1)=Batdau;
end
%% Giai Ma
for k=1:soluong
   
d1=a(X(k):Y(k));
Nl=length(d1);
t=[0:Nl-1]/fs;
y=fft(d1);
f=[0:Nl/2] * fs/Nl;
P= abs(y/Nl);
P2=P(1:Nl/2+1);

%ve dinh cua tan so
f(locs);
plot(f,P2,f(locs),pks,'or');
% TIM TAN SO
[pks, locs]=findpeaks(P2,'MinPeakHeight',0.04);
Tso=f(locs);
% Giai Ma
BoMa(k)=DoTanSo(Tso(1),Tso(2));
%plot(f,P2,f(locs),pks,'or')
end
BoMa
%% Xuat du lieu ket qua
A=string(BoMa);
Ma="";
for k=1:soluong
 Ma=Ma+A(k);
 if ((rem(k,10)==0)&&(k<soluong))
     Ma=Ma+"-";
 end
end
Ma
----
Code phân tích mã số
function Nut=DoTanSo(T1, T2)
Saiso=30;
Ma = [1209 1336 1477 1633 697 770 852 941];

TS =[1 2 3 10;4 5 6 11; 7 8 9 12; 14 0 15 13];

NutC=0;
for i=1:8
if ((T1 >Ma(i)-Saiso)&&(T1 <Ma(i)+Saiso))
    NutC=i;
end
end
for i=1:8
if ((T2 >Ma(i)-Saiso)&&(T2 <Ma(i)+Saiso))
    NutR=i;
end
end

if (NutC>4)
    Nut=TS(NutC-4,NutR);
elseif (NutR>4)
    Nut=TS(NutR-4,NutC);
else
    Nut=100;
end
end
[/tintuc]

Nhận xét

Bài đăng phổ biến từ blog này

HƯỚNG DẪN SỬ DỤNG APP ĐIỀU KHIỂN ROBOT MEGA

App Điều khiển Robot Mega được mình phát triển trên nền tảng Android. App được dùng để kết nối điện thoại và Arduino thông qua Modul bluetooth HC-05             Download app:  Điền khiển Robot Mega  I- Phần cứng 1 x Arduino Uno 2 x Động cơ 5-12V 1 x   bluetooth  HC 05 Sơ đồ điều khiển Robot mega dùng HC 05 II- Bộ mã Ứng dụng giúp kết nối Ardunio và điện thoại thông qua bộ modul bluetool Tiến - "1" Lùi - "2" Trái - "3" Phải- "4" Stop -"5" Qtrai - "6" QPhai -"7" Gấp - " 8" Nhả- " 9" A- "A" B -"B" C-"C" D-"D" Lên-"L" Xuống-"X" V1- "E" V2-"F" V3- "G" Giao diện app Điều khiển Robot III- Code điều khiển #define     MT1_T      3 #define     MT1_N      5 #define     MT2_T      6 #define     MT2_N      9 unsigned char tocdo = 255; unsigned int GIATRI=0; void setup() {    Serial.begin(9600);  ...

4 Kỹ Thuật Thư Giãn Để Chinh Phục Giấc Ngủ Nhanh Chóng

Trong cuộc sống hiện đại nhanh chóng và đầy áp lực, giấc ngủ chất lượng đã trở thành một điều xa xỉ mà không phải ai cũng dễ dàng đạt được. Đối mặt với vấn đề này, nhiều người tìm kiếm các phương pháp để cải thiện khả năng chìm vào giấc ngủ một cách nhanh chóng và hiệu quả. Dưới đây là tổng hợp của một số kỹ thuật thực tế đã được chứng minh có thể giúp thư giãn cơ thể và tâm trí, tạo điều kiện thuận lợi cho việc ngủ nhanh hơn. 1. Kỹ Thuật Thở 4-7-8 Kỹ thuật thở 4-7-8 là một công cụ thư giãn đơn giản mà hiệu quả, giúp điều chỉnh hơi thở và thúc đẩy sự thư giãn toàn diện: Bước 1: Đặt đầu lưỡi phía sau răng cửa trên. Bước 2: Hít thở sâu qua mũi trong 4 giây. Bước 3: Giữ hơi thở của bạn trong 7 giây. Bước 4: Thở ra hết khí qua miệng trong 8 giây. Lặp lại chu trình này 4 lần giúp giảm căng thẳng và chuẩn bị cơ thể cho giấc ngủ. 2. Kỹ Thuật Quân Đội Phát triển bởi quân đội Mỹ, kỹ thuật này nhằm mục đích giúp binh sĩ ngủ nhanh ngay cả trong điều kiện khó khăn: Bước 1: Thư giãn toàn bộ cơ mặt,...

Nghịch Lý của Sự Lựa Chọn: Đa Dạng hay Đau Đầu?

Nếu bạn từng đứng trước một quầy hàng đầy màu sắc với hàng trăm loại mứt khác nhau và cảm thấy hoang mang không biết nên chọn loại nào, bạn đã trải qua một hiện tượng được gọi là "nghịch lý của sự lựa chọn". Sự lựa chọn, mặc dù cơ bản là một phần không thể thiếu của tự do, nhưng nếu có quá nhiều lựa chọn, nó có thể tạo ra căng thẳng và không hài lòng. Trong bài viết này, chúng ta sẽ tìm hiểu về nghịch lý này, hậu quả của việc có quá nhiều lựa chọn và mối quan hệ giữa lựa chọn và tự do. Hiểu Nghịch Lý của Sự Lựa Chọn "Nghịch lý của sự lựa chọn" là một khái niệm được giới thiệu bởi nhà tâm lý học Barry Schwartz. Theo Schwartz, ngay cả khi chúng ta có quyền tự do lựa chọn, sự tự do này lại có thể tạo ra áp lực và căng thẳng. Điều này bởi vì khi có quá nhiều lựa chọn, chúng ta cảm thấy mất tập trung, bối rối và khó khăn trong việc đưa ra quyết định. Thay vì cảm thấy hạnh phúc và thoả mãn với sự đa dạng, chúng ta lại cảm thấy bị áp lực, căng thẳng và không hài lòng. Có m...