Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

VietHann/BSS_DUET

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BSS_DUET - Blind Source Separation using DUET Algorithm

📖 Giới thiệu

Dự án này triển khai thuật toán DUET (Degenerate Unmixing Estimation Technique) cho bài toán Blind Source Separation (BSS) - Tách nguồn âm thanh mù. Các phương pháp được triển khai bao gồm:

  1. DUET gốc - Thuật toán DUET cơ bản
  2. DUET + Delay-and-Sum Beamformer - Kết hợp DUET với kỹ thuật beamforming Delay-and-Sum
  3. DUET + Hybrid Beamformer - Kết hợp DUET với Hybrid Beamformer (MVDR + Delay-and-Sum)

Thông số mặc định:

  • Khoảng cách giữa 2 mic: 4.57 cm
  • Tốc độ âm thanh: 343 m/s
  • Speaker 1: 15 độ
  • Speaker 2: 165 độ
  • Sample rate mục tiêu: 16000 Hz

📁 Cấu trúc thư mục

BSS_DUET/
├── 📂 Thư mục input/output
│   ├── newaudio/          # Thư mục chứa file audio đầu vào mới
│   ├── record/            # Thư mục chứa file ghi âm
│   ├── record2/           # Thư mục chứa file ghi âm (bản 2)
│   ├── new_record/        # Thư mục chứa file ghi âm mới
│   ├── reference/         # Thư mục chứa file tham chiếu (ground truth)
│   ├── output/            # Thư mục kết quả xử lý cơ bản
│   ├── output_comparison/ # Kết quả so sánh các phương pháp
│   ├── output_ratio_comparison/ # Kết quả so sánh các tỷ lệ MVDR/DS
│   └── results_duet/      # Kết quả DUET
│
├── 📄 File xử lý chính
├── 📄 File tiện ích
└── 📄 File hỗ trợ STFT

📄 Mô tả chi tiết các file

🔷 FILE XỬ LÝ CHÍNH (Main Processing Files)

File Mô tả Input Output
f1.m DUET + Delay-and-Sum Beamformer - Xử lý tín hiệu với DUET kết hợp Delay-and-Sum beamformer + Post-processing + SI-SDR Evaluation với PIT newaudio/conversation_multi_ch0.wav, newaudio/conversation_multi_ch1.wav output_integrated2/, output/final_source*.wav, SI-SDR report
f2.m DUET + Hybrid Beamformer (60% MVDR + 40% DS) - Xử lý tín hiệu với DUET kết hợp Hybrid beamformer + Post-processing + SI-SDR Evaluation newaudio/conversation_multi_ch0.wav, newaudio/conversation_multi_ch1.wav output_integrated3/, output/final_source*.wav, SI-SDR report
f2_compare_ratios.m So sánh nhiều tỷ lệ MVDR/DS - Thử nghiệm với 17 tỷ lệ khác nhau (10%-90% MVDR) để tìm cấu hình tốt nhất newaudio/conversation_multi_no_noise_ch0.wav, newaudio/conversation_multi_no_noise_ch1.wav output_ratio_comparison/, CSV kết quả, biểu đồ so sánh

⚠️ Ghi chú sự khác biệt giữa f1.m và f2.m:

Đặc điểm f1.m f2.m
Beamformer Delay-and-Sum thuần Hybrid (60% MVDR + 40% DS)
MVDR Beamformer ❌ Không có ✅ Có - sử dụng ma trận hiệp phương sai nhiễu
Output folder output_integrated2 output_integrated3

🔷 FILE SO SÁNH PHƯƠNG PHÁP (Comparison Files)

File Mô tả Input Output
compare_methods.m So sánh DS vs Hybrid tại nhiều góc (15°, 30°, 45°, 60°, 75°) - Loop qua các thư mục góc khác nhau record/[angle]/mic1.wav, record/[angle]/mic2.wav output_comparison/angle_[X]/source*_method*.wav, overlay plots
compare_all_methods.m So sánh toàn diện 3 phương pháp: DUET gốc, DUET+DS, DUET+Hybrid(Proposed) - Energy plot (dB) 2mix2src130ms/mic1.wav, 2mix2src130ms/mic2.wav output_comparison_all/, energy comparison plot

⚠️ Ghi chú sự khác biệt:

Đặc điểm compare_methods.m compare_all_methods.m
Số phương pháp so sánh 2 (DS vs Hybrid) 3 (DUET, DS, Hybrid)
Input folder record/[angle]/ 2mix2src130ms/
Số góc thử nghiệm 5 góc (15°-75°) 1 góc cố định (15°, 165°)
Energy plot ✅ So sánh 4 đường (Mic, DUET, DS, Proposed)

🔷 FILE BEAMFORMER STANDALONE (Standalone Beamformer Files)

File Mô tả Input Output
duet_delay_and_sum.m DUET + Delay-and-Sum standalone - Phiên bản độc lập với input từ record/ record/mic1.wav, record/mic2.wav output_integrated/final_source*.wav, energy plot
duet_hybrid_beamformer.m DUET + Hybrid Beamformer standalone - Phiên bản độc lập với input từ 4/ 4/mic1.wav, 4/mic2.wav output_integrated3/final_source*.wav, energy plot
duet_hybrid_mvdr_ds.m DUET + Hybrid MVDR-DS - Tương tự duet_hybrid_beamformer.m (tương tự) (tương tự)
bss_duet_ds.m DUET + Delay-and-Sum - Input từ thư mục 4/ 4/mic1.wav, 4/mic2.wav output_integrated2/, energy plot

⚠️ Ghi chú sự khác biệt giữa các file standalone:

File Input folder Output folder Beamformer
duet_delay_and_sum.m record/ output_integrated/ Delay-and-Sum
bss_duet_ds.m 4/ output_integrated2/ Delay-and-Sum
duet_hybrid_beamformer.m 4/ output_integrated3/ Hybrid (60% MVDR + 40% DS)

🔷 FILE THỬ NGHIỆM (Experiment Files)

File Mô tả Input Output
run_beta_experiments.m Thử nghiệm với các giá trị β khác nhau (0.0, 0.2, 0.4, 0.6, 0.8, 1.0) - β là tỷ lệ MVDR trong Hybrid beamformer record/mic1.wav, record/mic2.wav output_beta_experiments/beta_[X]/source*_beta*.wav

Giải thích các giá trị β:

  • β = 0.0: 100% Delay-and-Sum (DS only)
  • β = 0.2: 20% MVDR + 80% DS
  • β = 0.4: 40% MVDR + 60% DS
  • β = 0.6: 60% MVDR + 40% DS (cấu hình mặc định)
  • β = 0.8: 80% MVDR + 20% DS
  • β = 1.0: 100% MVDR (MVDR only)

🔷 FILE HỖ TRỢ STFT (STFT Support Files)

File Mô tả Sử dụng bởi
tfanalysis.m Phân tích thời gian-tần số (STFT) - Chuyển tín hiệu miền thời gian sang miền thời gian-tần số Tất cả file xử lý chính
tfsynthesis.m Tổng hợp thời gian-tần số (Inverse STFT) - Tái tạo tín hiệu từ biểu diễn thời gian-tần số Tất cả file xử lý chính
twoDsmooth.m Làm mịn ma trận 2D - Sử dụng kernel trung bình để làm mịn histogram trong thuật toán DUET Tất cả file xử lý chính

🔷 FILE ĐÁNH GIÁ (Evaluation Files)

File Mô tả Input Output
si_sdr.m Tính SI-SDR (Scale-Invariant Signal-to-Distortion Ratio) - Metric đánh giá chất lượng tách nguồn. Bao gồm các hàm: si_sdr(), si_sdri(), si_sdr_batch(), si_sdr_pit() Estimated signal, Reference signal SI-SDR value (dB)

Các hàm trong si_sdr.m:

Hàm Mô tả
si_sdr(estimated, reference) Tính SI-SDR giữa tín hiệu ước lượng và tín hiệu tham chiếu
si_sdri(estimated, reference, mixture) Tính SI-SDR Improvement so với tín hiệu hỗn hợp
si_sdr_batch(estimated_sources, reference_sources) Tính SI-SDR cho nhiều nguồn
si_sdr_pit(estimated_sources, reference_sources) Tính SI-SDR với Permutation Invariant Training

🔷 FILE PHÂN TÍCH ÂM THANH (Audio Analysis Files)

File Mô tả Input Output
analyze_audio_signals.m Phân tích tín hiệu audio - Hiển thị waveform và spectrogram của 2 mic 4/mic1.wav, 4/mic2.wav mic1_analysis.png, mic2_analysis.png
analyze_audio_signals copy.m Bản copy của analyze_audio_signals.m (tương tự) (tương tự)
analyze_audio_signals3.m Phiên bản 3 của analyze_audio_signals.m (tương tự) (tương tự)
plot_mic_waveforms.m Vẽ waveform 2 mic - Hiển thị dạng sóng của mic1 và mic2 record2/mic1.wav, record2/mic2.wav Figure display
plot_two_audio_files.m Vẽ waveform 2 file audio bất kỳ - Quét thư mục và vẽ 2 file đầu tiên Thư mục audio bất kỳ Figure display

🔷 FILE TIỆN ÍCH PYTHON (Python Utility Files)

File Mô tả Input Output
mix_audio.py Trộn 2 file audio với khoảng nghỉ ở giữa. Tạo 3 file: mixture, reference_s1, reference_s2 cho mục đích đánh giá SI-SDR newaudio/s1.wav, newaudio/s2.wav mixture.wav, reference_s1.wav, reference_s2.wav
split_audio.py Tách file audio thành 2 phần dựa trên mốc thời gian. Phần 1 giữ audio trước mốc, phần 2 giữ audio sau mốc newaudio/conversation_multi_ch0.wav *_first_[X]s.wav, *_after_[X]s.wav

🔷 FILE TIỆN ÍCH KHÁC (Other Utility Files)

File Mô tả Input Output
create_reference_signals.m Tạo tín hiệu tham chiếu (ground truth) - Cắt mic1.wav thành 2 phần: Speaker 1 (0-7s) và Speaker 2 (7.5s-hết) record/mic1.wav reference/speaker1_reference.wav, reference/speaker2_reference.wav
get_audio_durations.m Lấy thời lượng audio - In thời lượng của tất cả file audio trong các thư mục Thư mục record2/ (mặc định) Console output
save_audio_durations.m Lưu thời lượng audio - Lưu thời lượng của tất cả file audio vào file text Thư mục new_record/ (mặc định) audio_durations.txt
run_save_durations.m Script chạy save_audio_durations - -

🔄 Pipeline xử lý chính

┌─────────────────────────────────────────────────────────────────┐
│                     PREPROCESSING                                │
│  1. Load audio từ 2 microphones                                 │
│  2. Resample về 16kHz                                           │
│  3. Convert stereo → mono                                        │
│  4. Pre-emphasis filter (α = 0.97)                              │
│  5. Bandpass filter (250-4000 Hz, 6th order)                    │
│  6. Normalize                                                    │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│                      STFT ANALYSIS                               │
│  Window: 1024 samples, Hop: 512 samples, FFT: 1024 points       │
│  Window function: Hamming                                        │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│                    DUET ALGORITHM                                │
│  1. Tính tỷ lệ biên độ (α) và độ trễ pha (δ)                   │
│  2. Tạo 2D histogram với weighted voting                        │
│  3. Tìm 2 peaks tách biệt nhất (nguồn)                         │
│  4. Tạo binary masks cho từng nguồn                            │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│                     BEAMFORMING                                  │
│  Option 1: Delay-and-Sum                                         │
│  Option 2: Hybrid (β × MVDR + (1-β) × DS), β mặc định = 0.6    │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│                    POST-FILTERING                                │
│  1. Wiener filtering với interference estimation                 │
│  2. Soft binary masking                                          │
│  3. Spectral subtraction                                         │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│                   POST-PROCESSING                                │
│  1. De-emphasis filter (inverse của pre-emphasis)               │
│  2. Smoothing filter (moving average)                           │
│  3. Noise gate (adaptive threshold)                             │
│  4. High-frequency enhancement                                   │
│  5. Peak normalization (0.95)                                   │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│                    OUTPUT & EVALUATION                           │
│  1. Lưu audio files (.wav)                                      │
│  2. Tính SI-SDR với PIT (Permutation Invariant Training)        │
│  3. Tạo visualization (waveform, energy plot)                   │
└─────────────────────────────────────────────────────────────────┘

🚀 Hướng dẫn sử dụng

1. Chuẩn bị dữ liệu

% Đặt file audio đầu vào vào thư mục phù hợp
% Ví dụ: newaudio/conversation_multi_ch0.wav, newaudio/conversation_multi_ch1.wav

2. Chạy xử lý cơ bản

% Sử dụng Delay-and-Sum beamformer
run('f1.m')

% Sử dụng Hybrid beamformer (60% MVDR + 40% DS)
run('f2.m')

3. So sánh các phương pháp

% So sánh toàn diện 3 phương pháp
run('compare_all_methods.m')

% Thử nghiệm các tỷ lệ MVDR/DS khác nhau
run('f2_compare_ratios.m')

4. Tạo reference signals cho đánh giá

# Python: Trộn audio tạo mixture và reference
python mix_audio.py

📊 Metrics đánh giá

SI-SDR (Scale-Invariant Signal-to-Distortion Ratio)

  • Công thức: SI-SDR = 10 × log₁₀(||s_target||² / ||e_noise||²)
  • Giá trị cao hơn = tốt hơn
  • Sử dụng PIT để xử lý ambiguity về thứ tự nguồn

SI-SDRi (SI-SDR Improvement)

  • SI-SDRi = SI-SDR(estimated, reference) - SI-SDR(mixture, reference)
  • Đo lường mức cải thiện so với tín hiệu hỗn hợp ban đầu

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published