1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ Án Chuyên Ngành Đề Tài Audio Visualizer.doc

23 4 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

Nội dung

MẪU ĐỒ ÁN KHOÁ LUẬN TỐT NGHIỆP ĐẠ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 MỞ ĐẦU Ngày nay khoa học kỹ thuật trên thế giới nói chung, ở Việt Nam[.]

ĐẠ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 MỞ ĐẦU Ngày khoa học kỹ thuật giới nói chung, Việt Nam nói riêng đà phát triển mạnh mẽ không ngừng nâng cao phát triển mặt Đặc biệt ngành công nghệ thông tin Để đáp ứng nhu cầu ngày cao người hàng loạt cơng ty máy tính đời ứng dụng công nghệ thông tin áp dụng ngày nhều hơn.Với cơng nghệ đại ngày người giải phóng cơng việc nặng nhọc thay vào ứng dụng công nghệ thông tin ngày đại kỹ xảo robot, máy tự động Đặc biệt lĩnh vực giải trí, nhu cầu giải trí người cao Địi hỏi phần mềm phục vụ giải trí độc đáo Audio Visualizer ứng dụng cho phép nghe nhạc biểu diễn quang phổ cách sinh động, phục vụ nhu cầu giải trí người LỜI CẢM ƠN Để hoàn thành chuyên đề báo cáo thực tập trước tiên em xin gửi đến cô Hà Thị Minh Phương lời cảm ơn chân thành sâu sắc Vì kiến thức thân cịn hạn chế, q trình nghiên cứu, hồn thiện chun đề em khơng tránh khỏi sai sót, kính mong nhận ý kiến đóng góp từ Em xin chân thành cảm ơn MỤC LỤC Trang MỞ ĐẦU Chương Giới thiệu .10 1.1 Tổng quan .10 1.1.1 Audio visualizes 10 1.1.2 Bối cảnh thực đề tài .11 1.1.3 Vấn đề cần giải 12 1.2 Phương pháp, kết 12 1.2.1 Phương pháp 12 1.2.2 Kết 12 Chương Nghiên cứu tổng quan 13 2.1 Biến đổi Fourier 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 13 2.2.2 Thư viện Numpy 14 2.3 Mơ hình, bước thực .15 2.4 Thiết kế chi tiết .15 Chương Triển khai xây dựng .16 Chương Kết luận Hướng phát triển 17 PHỤ LỤC 121 DANH MỤC TÀI LIỆU THAM KHẢO 130 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 âm dạng đường thẳng Hình 1.3: Biểu diễn specrum âm dạng hình trịn Hình 1.4: Biểu diễn specrum âm dạng sóng 3D Hình 1.5: Hình ảnh minh họa cho kết thực Hình 1.6: Spectrum tập tin âm DANH MỤC CỤM TỪ VIẾT TẮT STT Cụm từ Công nghệ phần mềm Công nghệ thông tin … Viết tắt CNPM CNTT Chương Giới thiệu 1.1 Tổng quan 1.1.1 Audio visualizes Audio visualizes dạng biểu diễn âm miền tần số, biểu diễn lên hình dạng quang phổ(Spectrum) Audio visualizes ứng dụng vào nhiều lĩnh vực: - Lĩnh vực nghiên cứu  Máy phân tích phổ  Máy đo độ rung  Máy đo tiếng ồn  Máy sóng  Máy kiểm tra an tồ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 số biến thể khác  … Hình 1.2: Biểu diễn specrum âm dạng đường thẳng Hình 1.3: Biểu diễn specrum âm dạng hình trịn Hình 1.4: Biểu diễn specrum âm dạng sóng 3D 1.1.2 Bối cảnh thực đề tài Nhận thấy kiến thức lĩnh vực tín hiệu số quan trọng q trình học nên nhóm em chọn đề tài để thực nhằm mục đích nghiên cứu học tập, nâng cao trình độ thân 1.1.3 Vấn đề cần giải Xây dựng ứng dụng thực tính tốn biểu diễn âm dạng spectrum Hình 1.5: Hình ảnh minh họa cho kết thực 1.2 Phương pháp, kết 1.2.1 Phương pháp Qua q trình nghiên cứu, nhóm tìm thuật tốn sử dụng biến đổi Fast Transform Fourier 1.2.2 Kết - Ứng dụng viết Python - Nhận đầu vào tập tin audio xuất hình Spectrum tập tin âm Hình 1.6: Spectrum tập tin âm Chương Nghiên cứu tổng quan 2.1 Biến đổi Fourier 2.1.1 Khái niệm Biến đổi Fourier hay chuyển hóa Fourier, đặt tên theo nhà toán học người Pháp Joseph Fourier, phép biến đổi hàm số tín hiệu theo miền thời gian sang miền tần số Chẳng hạn nhạc phân tích dựa tần số 2.1.2 Ứng dụng Biến đổi Fourier có nhiều ứng dụng khoa học, ví dụ 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 nhiều lĩnh vực khác Trong xử lý tín hiệu ngành liên quan, biến đổi Fourier thường nghĩ đến chuyển đổi tín hiệu thành thành phần biên độ tần số Sự ứng dụng rộng rãi biến đổi Fourier bắt nguồn từ tính chất hữu dụng biến đổi này:  Tính tuyến tính:  Tồn biến đổi nghịch đảo, thực tế biến đổi Fourier nghịch đảo gần có dạng với biến đổi thuận  Những hàm số sin sở hàm riêng phép vi phân, có nghĩa khai triển biến phương trình vi phân tuyến tính với hệ số khơng đổi thành phương trình đại số Ví dụ, hệ vật lý tuyến tính khơng phụ thuộc thời gian, tần số đại lượng khơng đổi, thành phần tần số khác tính tốn cách độc lập  Theo định lý tích tổng chập, biến đổi Fourier chuyển tích tổng chập phức tạp thành tích đại số đơn giản  Biến đổi Fourier rời rạc tính tốn cách nhanh chóng máy tính nhờ thuật tốn FFT (fast Fourier transform)  Theo định lý Parseval-Plancherel, lượng tín hiệu (tích phân bình phương giá trị tuyệt đối hàm) không đổi sau biến đổi Fourier 2.2 Cơng nghệ sử dụng Ngồi việc xây dựng ứng dụng, q trình phát triển địi hỏi thêm yếu tố giúp đẩy nhanh trình phát triển, mã nguồn ngắn gọn,rõ ràng có hỗ trợ nhiều thư viện tốn học nâng cao Vì nhóm định sử dụng Python cho việc phát triển 2.2.1 Python Python ngơn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, tạo Guido van Rossum Nó dễ dàng để tìm hiểu lên ngơn ngữ lập trình nhập mơn tốt cho người lần đầu tiếp xúc với ngơn ngữ lập trình Python hồn tồn tạo kiểu động sử dụng chế cấp phát nhớ tự động Python có cấu trúc liệu cấp cao mạnh mẽ cách tiếp cận đơn giản hiệu lập trình hướng đối tượng Cú pháp lệnh Python điểm cộng vơ lớn rõ ràng, dễ hiểu cách gõ linh động làm cho nhanh chóng trở thành ngơn ngữ lý tưởng để viết script phát triển ứng dụng nhiều lĩnh vực, hầu hết tảng Tính Python Ngơn ngữ lập trình đơn giản, dễ học: Python có cú pháp đơn giản, rõ ràng Nó dễ đọc viết nhiều so sánh với ngơn ngữ lập trình khác C++, Java, C# Python làm cho việc lập trình trở nên thú vị, cho phép bạn tập trung vào giải pháp khơng phải cú pháp Miễn phí, mã nguồn mở: Bạn tự sử dụng phân phối Python, chí dùng cho mục đích thương mại Vì mã nguồn mở, bạn khơng sử dụng phần mềm, chương trình viết Python mà cịn thay đổi mã nguồn Python có cộng đồng rộng lớn, khơng ngừng cải thiện lần cập nhật Khả di chuyển: Các chương trình Python di chuyển từ tảng sang tảng khác chạy mà khơng có thay đổi Nó chạy liền mạch hầu hết tất tảng Windows, macOS, Linux Khả mở rộng nhúng: Giả sử ứng dụng địi hỏi phức tạp lớn, bạn dễ dàng kết hợp phần code C, C++ ngơn ngữ khác (có thể gọi từ C) vào code Python Điều cung cấp cho ứng dụng bạn tính tốt khả scripting mà ngơn ngữ lập trình khác khó làm Ngơn ngữ thơng dịch cấp cao: Không giống C/C++, với Python, bạn lo lắng nhiệm vụ khó khăn quản lý nhớ, dọn dẹp liệu vô nghĩa, Khi chạy code Python, tự động chuyển đổi code sang ngơn ngữ máy tính hiểu Bạn không cần lo lắng hoạt động cấp thấp Thư viện tiêu chuẩn lớn để giải tác vụ phổ biến: Python có số lượng lớn thư viện tiêu chuẩn giúp cho công việc lập trình bạn trở nên dễ thở nhiều, đơn giản khơng phải tự viết tất code Ví dụ: Bạn cần kết nối sở liệu MySQL Web server? Bạn nhập thư viện MySQLdb sử dụng Những thư viện kiểm tra kỹ lưỡng sử dụng hàng trăm người Vì vậy, bạn chắn khơng làm hỏng code hay ứng dụng Hướng đối tượng: Mọi thứ Python hướng đối tượng Lập trình hướng đối tượng (OOP) giúp giải vấn đề phức tạp cách trực quan Với OOP, bạn phân chia vấn đề phức tạp thành tập nhỏ cách tạo đối tượng 2.2.2 Thư viện Numpy NumPy từ viết tắt "Numeric Python" "Numerical Python" Nó mơ-đun mở rộng mã nguồn mở cho Python, cung cấp chức biên dịch nhanh cho thao tác toán học số Hơn nữa, NumPy làm phong phú ngôn ngữ lập trình Python với cấu trúc liệu mạnh mẽ để tính tốn hiệu mảng ma trận đa chiều Việc thực chí nhằm vào ma trận mảng khổng lồ Bên cạnh mô-đun cung cấp thư viện lớn chức toán học cấp cao để hoạt động ma trận mảng Cho phép làm việc hiệu với ma trận mảng, đặc biệt liệu ma trận mảng lớn với tốc độ xử lý nhanh nhiều lần sử dụng “core Python” đơn 2.3 Mơ hình, bước thực Bước 1: Thu tín hiệu (tính hiệu vào file audio 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 file audio thu trực tiếp từ micro) 2.4.2 Lấy mẫu tín hiệu Âm kỹ thuật số sử dụng điều chế mã xung (PCM) 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ữ, truyền Tính hữu ích hệ thống kỹ thuật số khả lưu trữ, truy xuất truyền tín hiệu mà khơng có tổn thất mặt chất lượng Tần số lấy mẫu Tai người 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 40 kHz, người ta thườ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 yêu cầu bản, ví dụ 96 kHz hay chí 192 kHz. Điều trái ngược với kết phịng thí nghiệm chứng minh tai người nghe âm tần số siêu âm, vài trường hợp, siêu âm có khả tương tác điều chỉnh phần phổ tần âm (biến dạng điều biến tương hỗ; intermodulation distortion hay IMD) Sự biến dạng điều biến khơng có âm thực đặc điểm đặc trưng âm nhân tạo. Một điểm lợi tần số lấy mẫu cao vượt mức giảm yêu cầu lọc thông thấp ADC DAC Độ sâu số (bit depth Âm thường lượng tử hóa với độ sâu số 8, 16 20 bit, mặt lý thuyết cực đại 'tỷ số tín hiệu nhiễu lượng tử' (signal to quantization noise ratio; SQNR) cho dạng sóng sin chuẩn (pure sine wave) khoảng 49.93dB, 98.09 dB 122.17 dB. Âm 8-bit nói chung khơng cịn sử dụng nhiễu lượng tử (cực đại tỷ số SQNR thấp), biên mã 8-bit theo thuật toán luật A và luật μ đóng độ phân giải thành 8-bit lại làm tăng hệ số méo phi tuyến (total harmonic distortion; THD) Chất lượng âm của CD được mã hóa với 16 bit Nhiễu nhiệt (thermal noise) làm hạn chế số lượng bit thực sử dụng q trình lượng tử hóa Vài hệ thống analog (tương tự) có tỉ số tín hiệu tạp âm (SNR hay S/N) vượt 120 dB, cần 20-bit để lượng tử hóa 2.4.3 Lượng tử hóa tín hiệu Q trình xấp xĩ giá trị mẫu rời rạc Ỉ chuyển tập mẫu rời rạc có số giá trị lớn thành tập có số giá trị Vị trí khối lượng tử hóa 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 lượng tử hóa thể qua quan hệ ngõ vào - ngõ ra: Ví dụ: Bộ lượng tử hóa (uniform quantizer) bit Với lượng tử hóa có tầm tồ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ử: Sai số lượng tử (quantization error) hay nhiễu lượng tử (quantization noise): biến ngẫu nhiên có phân bố đều, đặc trưng sai số hiệu dụng: Tỉ số SNR lượng tử hóa: Nhận xét:  Bộ ADC tăng thêm bitỈ tỉ số SNR tăng thêm dB  Số bit nhiều nhiễu lượng tử 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 cịn gọi là biến đổi Fourier hữu hạn, biến đổi trong giải tích Fourier cho tín hiệu thời gian rời rạc Đầu vào biến đổi chuỗi hữu hạn các số thực hoặc số phức, làm biến đổi công cụ lý tưởng để xử lý thông tin các máy tính Đặc biệt, biến đổi sử dụng rộng rãi trong xử lý tín hiệu và ngành liên quan đến phân tích tần số chứa tín hiệu, để giải phương trình đạo hàm riêng, để làm phép như tích chập Biến đổi tính nhanh thuật tốn biến đổi Fourier nhanh (FFT) Dãy của N số phức biến đổi thành chuỗi của N số phức X0, , XN−1 bởi công thức sau đây: với e là cơ số lôgarit tự nhiên, là đơn vị ảo, π là pi Phép biến đổi Fourier rời rạc ngược (IDFT) được cho cơng thức sau Những phương trình mơ tả đơn giản sau: số phức Xk đại diện cho biên độ pha bước sóng khác "tín hiệu vào" xn Phép biến đổi DFT tính giá trị Xk từ giá trị xn, IDFT tính xn bằng tổng sóng thành phần với tần số k / N Khi viết phương trình dạng trên, ta sử dụng công thức Euler để biểu diễn hàm lượng giác dạng lũy thừa số phức để biến đổi dễ dàng Khi viết Xk dưới dạng tọa độ cực, ta thu biên độ Ak / N và pha φk từ modulus argument của Xk: đó atan2 là dạng hai đối số hàm arctan Cần ghi thừa số chuẩn hóa DFT IDFT (ở 1/N) dấu số mũ quy ước, khác tài liệu khác Điều kiện cho quy ước DFT IDFT có dấu ngược số mũ tích hai thừa số chuẩn hóa phải 1/N 2.4.5 Biểu diễn tín hiệu Chương Triển khai xây dựng 3.1 Fourier Biến đổi Fourier nhanh, Cooley Tukey đề xuất năm 1965, thuật tốn tính tốn hiệu Biến đổi Fourier rời rạc (DFT) DFT phân tách tín hiệu thành chuỗi có dạng sau: đó x m là điểm tín hiệu phân tích và X k là 'chế độ' thành phần tần số cụ thể. Lưu ý thành phần tần số tăng lên đến độ dài tín hiệu (M-1), thảo luận chút sau hạn chế từ ( Nyquist ) Từ trên, hàm mũ phức viết lại dạng hàm sin côsin công thức Euler: Sao cho chuỗi chứa sóng hình sin: Bây thấy làm tín hiệu biến đổi thành chuỗi sóng hình sin Lấy mẫu Cách dễ để kiểm tra FFT Python đo sóng hình sin tần số biết cách sử dụng micrô tạo hàm hình sin Python Vì phần tập trung vào việc hiểu FFT, chúng em trình bày cách mơ sóng sin lấy mẫu Python Dưới cách tạo sóng sin Python cách sử dụng tiêu chí lấy mẫu mơ tín hiệu thực: 10 Đoạn mã 'lấy mẫu' sóng hình sin 44,1 kHz 0,1 giây (100 ms) Tôi sử dụng sóng hình sin 100 Hz, chúng tơi mong đợi: Điều có nghĩa nhận 10 chu kỳ từ sóng sin 100 Hz 0,1 giây Điều có nghĩa có 4410 mẫu cho 10 chu kỳ 441 mẫu chu kỳ - số để tái tạo tín hiệu Cốt truyện tạo mã hiển thị bên dưới: 11 Tần số Nyquist Trong xử lý tín hiệu kỹ thuật số: "Để khôi phục tất thành phần Fourier dạng sóng tuần hồn, cần phải sử dụng tốc độ lấy mẫu f s ít gấp đơi tần số dạng sóng cao nhất" Câu lệnh yêu cầu người dùng lấy mẫu tín hiệu tần số tự nhiên cao gấp đôi tần số tự nhiên cao hệ thống dự kiến theo tốn học: Do đó, hàm FFT, giới hạn thành phần tần số thiết lập tốc độ mẫu, thường cao chút so với hai lần tần số tự nhiên cao mong đợi hệ thống Trong trường hợp âm học, tốc độ lấy mẫu đặt mức xấp xỉ gấp đôi tần số cao mà người nhận biết (20 kHz), tốc độ lấy mẫu cho âm tối thiểu 40 kHz Chúng ta thường thấy 44,1 kHz 48 kHz, có nghĩa âm thường lấy mẫu xác tần số Nyquist thiết lập phạm vi tai người Do đó, thực tế, điều cần thiết phải tuân theo bất bình đẳng sau: Như cơng cụ trực quan hóa, tơi vẽ số tín hiệu lấy mẫu lấy mẫu xung quanh tần số Nyquist cho sóng sin 100 Hz Theo tun bố trên, sóng hình sin 100 Hz tần số lớn hệ thống, nên lấy mẫu 200 Hz 12 Các tượng trên, lấy mẫu tần số Nyquist gọi cưa Dấu hiệu che khuất phép đo tạo đỉnh sai liệu dẫn đến kết khơng xác Đây lý phải lấy mẫu tần số tự nhiên cao hệ thống Tất nhiên, số tình không đảm bảo kiến thức xác định trước hệ thống, trường hợp đó, phương pháp lọc miền thời gian giải thích cho hành vi khơng mong muốn May mắn thay, lĩnh vực âm học, thường không cần phải lo lắng tần số cao phạm vi thính giác thơng thường người (tất nhiên, ngoại lệ phạm vi siêu âm) 3.2 Biến đổi Fast Fourier Hàm FFT Python Python sử dụng sau: Tuy nhiên, điều quan trọng cần lưu ý FFT không tạo ý nghĩa vật lý Vì vậy, cần chia cho độ dài tín hiệu, lấy nửa liệu (phổ phía - khơng thảo luận đây) Từ cần lấy giá trị tuyệt đối tín hiệu để đảm bảo khơng có giá trị ảo (phức tạp, phi vật lý) Thuật toán FFT đầy đủ biểu đồ phổ tần số hiển thị bên dưới: 13 Mã lấy FFT tín hiệu đầu vào y (trong trường hợp sóng sin trên), có độ dài N Nó tính tốn vectơ tần số cách sử dụng số điểm tần số lấy mẫu Vectơ tần số phổ biên độ tạo biểu đồ sau: Nếu phân tích tần số biên độ đỉnh đồ thị phổ (đôi gọi biểu đồ chu kỳ), kết luận đỉnh tần số 100 Hz Điều trả biên độ tần số sóng sin đầu vào chúng tơi Cũng cần lưu ý việc đưa nhiễu vào tín hiệu Tiếng ồn coi vật phép tính gần 0, bỏ qua (biên độ 10 đến cơng suất -17, giả định cơng bằng) Dự đốn trường hợp khơng đặc biệt ấn tượng, thấy rõ ràng chuỗi thời gian tạo sóng sin 100 Hz Dưới tơi giới thiệu tín hiệu phức tạp với ba sóng sin số tiếng ồn Gaussian: 14

Ngày đăng: 13/06/2023, 05:11

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

TÀI LIỆU LIÊN QUAN

w