1. Trang chủ
  2. » Thể loại khác

ĐỒ ÁN CHUYÊN NGÀNH ĐỀ TÀI: AUDIO VISUALIZER

25 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 1,94 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương 2 Nghiên cứu tổng quan2.1 Biến đổi Fourier là gì 2.1.1 Khái niệm Biến đổi Fourier hay chuyển hóa Fourier, được đặt tên theo nhà toán học ngườiPháp Joseph Fourier, là phép biến đổi

Trang 1

ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

ĐỒ ÁN CHUYÊN NGÀNH

ĐỀ TÀI: AUDIO VISUALIZER

Sinh viên thực hiện : PHAN TRẦN HÙNG

NGUYỄN NGỌC HÀ GIANG

Giảng viên hướng dẫn : HÀ THỊ MINH PHƯƠNG

Lớp : 17IT1

Đà nẵng, tháng 12 năm 2020

Trang 2

ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

ĐỒ ÁN CHUYÊN NGÀNH

AUDIO VISUALIZER

Đà Nẵng, tháng 12 năm 2020

Trang 3

MỞ ĐẦU

Ngày nay khoa học kỹ thuật trên thế giới nói chung, ở Việt Nam nói riêng đangtrên đà phát triển mạnh mẽ và không ngừng nâng cao phát triển về mọi mặt Đặcbiệt là ngành công nghệ thông tin Để đáp ứng nhu cầu ngày càng cao của conngười thì hàng loạt các công ty về máy tính được ra đời và các ứng dụng côngnghệ thông tin đang được áp dụng ngày một nhều hơn.Với công nghệ hiện đạinhư ngày nay thì con người dần dần được giải phóng bởi những công việc nặngnhọc và thay vào đó là những ứng dụng của công nghệ thông tin ngày một hiệnđại và kỹ xảo như các robot, máy tự động Đặc biệt là trong lĩnh vực giải trí, nhucầu giải trí của con người này càng cao Đòi hỏi những phần mềm phục vụ giải tríđộc đáo hơn Audio Visualizer là một ứng dụng cho phép nghe nhạc và biểu diễnquang phổ một cách sinh động, phục vụ nhu cầu giải trí của con người

Trang 4

LỜI CẢM ƠN

Để hoàn thành chuyên đề báo cáo thực tập này trước tiên em xin gửi đến cô HàThị Minh Phương lời cảm ơn chân thành và sâu sắc nhất

Vì kiến thức bản thân còn hạn chế, trong quá trình nghiên cứu, hoàn thiện chuyên

đề này em không tránh khỏi những sai sót, kính mong nhận được những ý kiếnđóng góp từ cô

Em xin chân thành cảm ơn

Trang 5

NHẬN XÉT (Của giảng viên hướng dẫn)

………

………

………

………

………

………

…… ………

………

………

………

………

……… ………

………

………

………

…… ………

………

………

………

………

……… ………

………

………

………

…… ………

………

………

………

………

………

Trang 7

MỤC LỤC Trang MỞ ĐẦU 1

Chương 1 Giới thiệu 10

1.1 Tổng quan 10

1.1.1 Audio visualizes là gì 10

1.1.2 Bối cảnh thực hiện đề tài 11

1.1.3 Vấn đề cần giải quyết 12

1.2 Phương pháp, kết quả 12

1.2.1 Phương pháp 12

1.2.2 Kết quả 12

Chương 2 Nghiên cứu tổng quan 13

2.1 Biến đổi Fourier là gì 13

2.1.1 Khái niệm 13

2.1.2 Ứng dụng 13

2.2 Công nghệ sử dụng 13

2.2.1 Python là gì 13

2.2.2 Thư viện Numpy 14

2.3 Mô hình, các bước thực hiện 15

2.4 Thiết kế chi tiết 15

Chương 3 Triển khai xây dựng 16

Chương 4 Kết luận và Hướng phát triển 17

PHỤ LỤC 121

DANH MỤC TÀI LIỆU THAM KHẢO 130

Trang 8

DANH MỤC HÌNH

Trang

Hình 1.1: Một số loại máy phân tích phổ 1

Hình 1.2: Biểu diễn specrum của âm thanh dưới dạng đường thẳng 2

Hình 1.3: Biểu diễn specrum của âm thanh dưới dạng hình tròn 2

Hình 1.4: Biểu diễn specrum của âm thanh dưới dạng sóng 3D 2

Hình 1.5: Hình ảnh minh họa cho kết quả thực hiện 3

Hình 1.6: Spectrum của một tập tin âm thanh 3

Trang 10

Chương 1 Giới thiệu

 Máy đo độ rung

 Máy đo tiếng ồn

 Máy hiện sóng

 Máy kiểm tra an toàn thiết bị điện,

Hình 1.1: Một số loại máy phân tích phổ

- Lĩnh vực giải trí

 Audio visualizer và một số biến thể khác

1

Trang 11

Hình 1.2: Biểu diễn specrum của âm thanh dưới dạng đường thẳng

Hình 1.3: Biểu diễn specrum của âm thanh dưới dạng hình tròn

Hình 1.4: Biểu diễn specrum của âm thanh dưới dạng sóng 3D 1.1.2 Bối cảnh thực hiện đề tài

Nhận thấy những kiến thức về lĩnh vực tín hiệu số là quan trọng trong quá trìnhhọc nên nhóm em đã chọn ra một đề tài để thực hiện nhằm mục đích nghiên cứu

và học tập, nâng cao trình độ bản thân

2

Trang 12

- Ứng dụng được viết bằng Python

- Nhận đầu vào là một tập tin audio và xuất ra màn hình Spectrum của tập tin âm thanh đó

Hình 1.6: Spectrum của một tập tin âm thanh

3

Trang 13

Chương 2 Nghiên cứu tổng quan

2.1 Biến đổi Fourier là gì

2.1.1 Khái niệm

Biến đổi Fourier hay chuyển hóa Fourier, được đặt tên theo nhà toán học ngườiPháp Joseph Fourier, là phép biến đổi một hàm số hoặc một tín hiệu theo miềnthời gian sang miền tần số Chẳng hạn như một bản nhạc có thể được phân tíchdựa trên tần số của nó

2.1.2 Ứng dụng

Biến đổi Fourier có rất nhiều ứng dụng khoa học, ví dụ như trong vật lý, số học,

xử lý tín hiệu, xác suất, thống kê, mật mã, âm học, hải dương học, quang học,hình học và rất nhiều lĩnh vực khác Trong xử lý tín hiệu và các ngành liên quan,biến đổi Fourier thường được nghĩ đến như sự chuyển đổi tín hiệu thành cácthành phần biên độ và tần số Sự ứng dụng rộng rãi của biến đổi Fourier bắtnguồn từ những tính chất hữu dụng của biến đổi này:

do đó những thành phần tần số khác nhau có thể được tính toán một cáchđộc lập

 Theo định lý tích tổng chập, biến đổi Fourier chuyển một tích tổng chậpphức tạp thành một tích đại số đơn giản

 Biến đổi Fourier rời rạc có thể được tính toán một cách nhanh chóng bằngmáy tính nhờ thuật toán FFT (fast Fourier transform)

 Theo định lý Parseval-Plancherel, năng lượng của tín hiệu (tích phân củabình phương giá trị tuyệt đối của hàm) không đổi sau biến đổi Fourier

2.2 Công nghệ sử dụng

Ngoài việc xây dựng ứng dụng, trong quá trình phát triển đòi hỏi thêm các yếu tốgiúp đẩy nhanh quá trình phát triển, mã nguồn ngắn gọn,rõ ràng và có hỗ trợnhiều thư viện toán học nâng cao

Vì vậy nhóm quyết định sử dụng Python cho việc phát triển

2.2.1 Python là gì

Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, được tạo ra bởiGuido van Rossum Nó dễ dàng để tìm hiểu và đang nổi lên như một trong nhữngngôn ngữ lập trình nhập môn tốt nhất cho người lần đầu tiếp xúc với ngôn ngữlập trình Python hoàn toàn tạo kiểu động và sử dụng cơ chế cấp phát bộ nhớ tựđộng Python có cấu trúc dữ liệu cấp cao mạnh mẽ và cách tiếp cận đơn giảnnhưng hiệu quả đối với lập trình hướng đối tượng Cú pháp lệnh của Python là

4

Trang 14

điểm cộng vô cùng lớn vì sự rõ ràng, dễ hiểu và cách gõ linh động làm cho nónhanh chóng trở thành một ngôn ngữ lý tưởng để viết script và phát triển ứngdụng trong nhiều lĩnh vực, ở hầu hết các nền tảng.

Tính năng chính của Python

Ngôn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng Nó

dễ đọc và viết hơn rất nhiều khi so sánh với những ngôn ngữ lập trình khác nhưC++, Java, C# Python làm cho việc lập trình trở nên thú vị, cho phép bạn tậptrung vào những giải pháp chứ không phải cú pháp

Miễn phí, mã nguồn mở: Bạn có thể tự do sử dụng và phân phối Python, thậm chí

là dùng nó cho mục đích thương mại Vì là mã nguồn mở, bạn không những cóthể sử dụng các phần mềm, chương trình được viết trong Python mà còn có thểthay đổi mã nguồn của nó Python có một cộng đồng rộng lớn, không ngừng cảithiện nó mỗi lần cập nhật

Khả năng di chuyển: Các chương trình Python có thể di chuyển từ nền tảng nàysang nền tảng khác và chạy nó mà không có bất kỳ thay đổi nào Nó chạy liềnmạch trên hầu hết tất cả các nền tảng như Windows, macOS, Linux

Khả năng mở rộng và có thể nhúng: Giả sử một ứng dụng đòi hỏi sự phức tạp rấtlớn, bạn có thể dễ dàng kết hợp các phần code bằng C, C++ và những ngôn ngữkhác (có thể gọi được từ C) vào code Python Điều này sẽ cung cấp cho ứng dụngcủa bạn những tính năng tốt hơn cũng như khả năng scripting mà những ngônngữ lập trình khác khó có thể làm được

Ngôn ngữ thông dịch cấp cao: Không giống như C/C++, với Python, bạn khôngphải lo lắng những nhiệm vụ khó khăn như quản lý bộ nhớ, dọn dẹp những dữliệu vô nghĩa, Khi chạy code Python, nó sẽ tự động chuyển đổi code sang ngônngữ máy tính có thể hiểu Bạn không cần lo lắng về bất kỳ hoạt động ở cấp thấpnào

Thư viện tiêu chuẩn lớn để giải quyết những tác vụ phổ biến: Python có một sốlượng lớn thư viện tiêu chuẩn giúp cho công việc lập trình của bạn trở nên dễ thởhơn rất nhiều, đơn giản vì không phải tự viết tất cả code Ví dụ: Bạn cần kết nối

cơ sở dữ liệu MySQL trên Web server? Bạn có thể nhập thư viện MySQLdb và

sử dụng nó Những thư viện này được kiểm tra kỹ lưỡng và được sử dụng bởihàng trăm người Vì vậy, bạn có thể chắc chắn rằng nó sẽ không làm hỏng codehay ứng dụng của mình

Hướng đối tượng: Mọi thứ trong Python đều là hướng đối tượng Lập trình hướngđối tượng (OOP) giúp giải quyết những vấn đề phức tạp một cách trực quan VớiOOP, bạn có thể phân chia những vấn đề phức tạp thành những tập nhỏ hơn bằngcách tạo ra các đối tượng

2.2.2 Thư viện Numpy

NumPy là một từ viết tắt của "Numeric Python" hoặc "Numerical Python" Nó làmột mô-đun mở rộng mã nguồn mở cho Python, cung cấp các chức năng biêndịch nhanh cho các thao tác toán học và số Hơn nữa, NumPy làm phong phú

5

Trang 15

ngôn ngữ lập trình Python với các cấu trúc dữ liệu mạnh mẽ để tính toán hiệu quảcác mảng và ma trận đa chiều Việc thực hiện thậm chí là nhằm vào ma trận vàmảng khổng lồ Bên cạnh đó các mô-đun cung cấp một thư viện lớn các chứcnăng toán học cấp cao để hoạt động trên các ma trận và mảng Cho phép làm việchiệu quả với ma trận và mảng, đặc biệt là dữ liệu ma trận và mảng lớn với tốc độ

xử lý nhanh hơn nhiều lần khi chỉ sử dụng “core Python” đơn thuần

2.3 Mô hình, các bước thực hiện

Bước 1: Thu tín hiệu (tính hiệu vào là 1 file audio hoặc thu trực tiếp từ micro)

Bước 2: Lấy mẫu tín hiệu

Bước 3: Lượng tử hóa tín hiệu

Bước 4: Biến đổi Fourier từ miền thời gian sang miền tần số

Bước 5: Biểu diễn tín hiệu

2.4 Thiết kế chi tiết

2.4.1 Thu tín hiệu (tính hiệu vào là 1 file audio hoặc thu trực tiếp từ micro) 2.4.2 Lấy mẫu tín hiệu

Âm thanh kỹ thuật số sử dụng điều chế mã xung (PCM) và các tín hiệu kỹ thuật

số để tái tạo lại âm thanh, bao gồm chuyển đổi từ tín hiệu tương tự sang tín hiệu

số (ADC), chuyển đổi từ tín hiệu số sang tín hiệu tương tự (DAC), lưu trữ, vàtruyền Tính hữu ích chính của một hệ thống kỹ thuật số là khả năng lưu trữ, truyxuất và truyền tín hiệu mà không có bất kỳ tổn thất nào về mặt chất lượng

Tần số lấy mẫu

Tai người có thể nghe được âm thanh ở tần số trong khoảng 20 Hz-20 kHz,theo định lý Nyquist thì tần số lấy mẫu tối thiểu phải là 40 kHz, vì vậy người tathường lấy mẫu với tần số 44.1 kHz (CD), 48 kHz (pro audio) hay 96 kHz

Hiện nay, công nghệ lấy mẫu có xu hướng sử dụng tần số lấy mẫu vượt quá cácyêu cầu cơ bản, ví dụ 96 kHz hay thậm chí là 192 kHz Điều này trái ngược vớinhững kết quả trong phòng thí nghiệm chứng minh rằng tai người không thể ngheđược những âm thanh ở tần số siêu âm, tuy vậy trong một vài trường hợp, thìnhững siêu âm có khả năng tương tác và điều chỉnh một phần của phổ tần âmthanh (biến dạng do điều biến tương hỗ; intermodulation distortion hay IMD) Sựbiến dạng điều biến này không có trong âm thanh thực và vì vậy nó là 1 đặc điểmđặc trưng của âm thanh nhân tạo Một điểm lợi thế là nếu tần số lấy mẫu cao vượtmức thì sẽ giảm được những yêu cầu của bộ lọc thông thấp trong ADC và DAC

Độ sâu số (bit depth

Âm thanh thường được lượng tử hóa với độ sâu số 8, 16 hoặc 20 bit, trên mặt lýthuyết thì cực đại của 'tỷ số tín hiệu trên nhiễu lượng tử' (signal to quantizationnoise ratio; SQNR) sẽ cho ra dạng sóng sin chuẩn (pure sine wave) là khoảng49.93dB, 98.09 dB và 122.17 dB Âm thanh 8-bit nói chung là không còn được

sử dụng nữa do nhiễu lượng tử (cực đại của tỷ số SQNR thấp), mặc dù nhữngbiên mã 8-bit theo thuật toán luật A và luật μ đóng độ phân giải thành 8-bit nhưnglại làm tăng hệ số méo phi tuyến (total harmonic distortion; THD) Chất lượng

âm thanh của CD được mã hóa với 16 bit Nhiễu nhiệt (thermal noise) làm hạnchế số lượng các bit thực sự có thể được sử dụng trong quá trình lượng tử hóa

6

Trang 16

Vài hệ thống analog (tương tự) có tỉ số tín hiệu trên tạp âm (SNR hay S/N) vượtquá 120 dB, do đó sẽ cần hơn 20-bit để lượng tử hóa.

2.4.3 Lượng tử hóa tín hiệu

Quá trình xấp xĩ giá trị các mẫu rời rạc Æ chuyển một tập các mẫu rời rạc có sốgiá trị rất lớn thành một tập có số giá trị ít hơn

Vị trí của khối lượng tử hóa trong hệ thống:

Hai kiểu lượng tử hóa:

 Kiểu làm tròn (rounding)

 Kiểu cắt bớt (truncation)

Đặc tính của bộ lượng tử hóa thể hiện qua quan hệ ngõ vào - ngõ ra:

Ví dụ: Bộ lượng tử hóa đều (uniform quantizer) 3 bit

Với bộ lượng tử hóa có tầm toàn thang R, biểu diễn B bitÆ 2B mức lượng tử

o Độ rộng lượng tử:

o Sai số lượng tử:

7

Trang 17

Sai số lượng tử (quantization error) hay nhiễu lượng tử (quantizationnoise): biến ngẫu nhiên có phân bố đều, được đặc trưng bằng sai số hiệu dụng:

Tỉ số SNR của bộ lượng tử hóa:

Nhận xét:

 Bộ ADC tăng thêm 1 bitÆ tỉ số SNR tăng thêm 6 dB

 Số bit càng nhiều thì nhiễu lượng tử càng nhỏ

 Tỉ số SNR không phụ thuộc vào biên độ tín hiệu

2.4.4 Biến đổi Fourier từ miền thời gian sang miền tần số

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ờigian 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áytí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ácngành liên quan đến phân tích tần số chứa trong một tín hiệu, để giải phươngtrì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ể đượctính nhanh bởi thuật toán biến đổi Fourier nhanh (FFT)

Dãy của N số phức được biến đổi thành chuỗi của N số phức X0, , XN−1 bởicông thức sau đây:

với e là cơ số của lôgarit tự nhiên, là đơn vị ảo, và π là pi

8

Trang 18

Phép biến đổi Fourier rời rạc ngược (IDFT) được cho bởi công thức sau

Những phương trình này có thể được mô tả đơn giản như sau: các số phức Xk đạidiện cho biên độ và pha ở các bước sóng khác nhau của "tín hiệu vào" xn Phépbiến đổi DFT tính các giá trị Xk từ các giá trị xn, trong khi IDFT tính xn bằngtổng của các sóng thành phần với tần số k / N Khi viết các phương trình dướidạng như trên, ta đã sử dụng công thức Euler để biểu diễn các hàm lượng giácdưới dạng lũy thừa số phức để biến đổi được dễ dàng Khi viết Xk dưới dạng tọa

độ cực, ta thu được biên độ Ak / N và pha φkk từ modulus và argument của Xk:

trong đó atan2 là dạng hai đối số của hàm arctan Cần ghi chú rằng các thừa sốchuẩn hóa của DFT và IDFT (ở đây là 1 và 1/N) và dấu của các số mũ chỉ là quyước, và có thể khác nhau trong các tài liệu khác nhau Điều kiện duy nhất cho cácquy ước này là DFT và IDFT có dấu ngược nhau ở các số mũ và tích của hai thừa

số chuẩn hóa phải là 1/N

2.4.5 Biểu diễn tín hiệu

Chương 3 Triển khai xây dựng

3.1 Fourier

Biến đổi Fourier nhanh, do Cooley và Tukey đề xuất năm 1965, là một thuật toántính toán hiệu quả của Biến đổi Fourier rời rạc (DFT) DFT phân tách một tínhiệu thành một chuỗi có dạng sau:

trong đó x m là một điểm trong tín hiệu đang được phân tích và X k là một 'chếđộ' hoặc thành phần tần số cụ thể Lưu ý rằng thành phần tần số chỉ có thể tăng

9

Trang 19

lên đến độ dài của tín hiệu (M-1), và chúng ta sẽ thảo luận một chút sau đó về

những hạn chế từ đó nữa ( Nyquist )

Từ trên, hàm mũ phức có thể được viết lại dưới dạng các hàm sin và côsin bằngcông thức Euler:

Sao cho chuỗi của chúng tôi chứa các sóng hình sin:

Bây giờ chúng ta có thể thấy làm thế nào một tín hiệu có thể được biến đổi thành một chuỗi các sóng hình sin

Lấy mẫu

Cách dễ nhất để kiểm tra FFT bằng Python là đo sóng hình sin ở một tần số đã biết bằng cách sử dụng micrô hoặc tạo một hàm hình sin trong Python Vì phần này tập trung vào việc hiểu FFT, chúng em sẽ trình bày cách mô phỏng một sóng sin lấy mẫu bằng Python Dưới đây là cách tạo sóng sin trong Python bằng cách

sử dụng tiêu chí lấy mẫu mô phỏng tín hiệu thực:

Đoạn mã trên 'lấy mẫu' một sóng hình sin ở 44,1 kHz trong 0,1 giây (100 ms) Tôi đã sử dụng sóng hình sin 100 Hz, vì vậy chúng tôi mong đợi:

Điều này có nghĩa là chúng ta sẽ nhận được 10 chu kỳ từ sóng sin 100 Hz trong 0,1 giây Điều này cũng có nghĩa là chúng ta sẽ có 4410 mẫu cho 10 chu kỳ hoặc

441 mẫu mỗi chu kỳ - con số này khá ít để tái tạo tín hiệu Cốt truyện được tạo bởi mã được hiển thị bên dưới:

10

Ngày đăng: 27/11/2021, 08:33

HÌNH ẢNH LIÊN QUAN

Hình 1.2: Biểu diễn specrum của âm thanh dưới dạng đường thẳng - ĐỒ ÁN CHUYÊN NGÀNH ĐỀ TÀI: AUDIO VISUALIZER
Hình 1.2 Biểu diễn specrum của âm thanh dưới dạng đường thẳng (Trang 11)
Hình 1.3: Biểu diễn specrum của âm thanh dưới dạng hình tròn - ĐỒ ÁN CHUYÊN NGÀNH ĐỀ TÀI: AUDIO VISUALIZER
Hình 1.3 Biểu diễn specrum của âm thanh dưới dạng hình tròn (Trang 11)
Hình 1.5: Hình ảnh minh họa cho kết quả thực hiện - ĐỒ ÁN CHUYÊN NGÀNH ĐỀ TÀI: AUDIO VISUALIZER
Hình 1.5 Hình ảnh minh họa cho kết quả thực hiện (Trang 12)
- Nhận đầu vào là một tập tin audio và xuất ra màn hình Spectrum của tập tin âm thanh đó - ĐỒ ÁN CHUYÊN NGÀNH ĐỀ TÀI: AUDIO VISUALIZER
h ận đầu vào là một tập tin audio và xuất ra màn hình Spectrum của tập tin âm thanh đó (Trang 12)
Sao cho chuỗi của chúng tôi chứa các sóng hình sin: - ĐỒ ÁN CHUYÊN NGÀNH ĐỀ TÀI: AUDIO VISUALIZER
ao cho chuỗi của chúng tôi chứa các sóng hình sin: (Trang 19)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w