1. Đặt vấn đề

Montreal Force Aligner (MFA) là một thư viện Python dùng để align time stamp cho file âm thanh và và file text kịch bản. Timestamp này sẽ dùng để hiển thị từ nào đang được phát âm.
Lệnh mfa align cho phép xuất dữ liệu time stamp ra dạng JSON. Tuy nhiên file JSON này rất to và cồng kềnh. Nhiệm vụ là cần phải sửa đổi mã nguồn gốc của MFA để sửa lại hàm xuất JSON rồi sau đó đóng gói lại thành docker image.

2. Cấu hình môi trường mfa trên local

Đầu tiên bạn cần phải cài đặt conda. Phần này trên mạng nhiều bạn tự tìm hiểu.

Bước 1: Tải mã nguồn
git clone https://github.com/MontrealCorpusTools/Montreal-Forced-Aligner.git

Bước 2: sửa file environment.yml
bỏ đi các dòng lệnh cuối cùng để chỉ còn

  - pip:
      - build
      - twine

Bước 3: Vào thư mục chứa mã nguồn MFA có file environment.yml, chạy lệnh

conda env create -n mfa-dev -f environment.yml

Bước 4: Kích hoạt môi trường mfa-dev vừa đặt ở bước 3

conda active mfa-dev

Bước 5: nạp toàn bộ mã nguồn mfa vào môi trường mfa-dev
Vẫn trong thư mục mã nguồn MFA chạy lệnh

pip install -e .

Bước 6: kiểm tra mfa đã được cài đúng chưa bằng lệnh

mfa version

Nếu đã ok thì chạy lệnh, dấu … thể hiện c

mfa align in/ english_mfa english_mfa out/ --clean --use_mp --output_format json

3. Lập trình debug mfa sử dụng VSCode hoặc Cursor

Bước 1:
Dùng IDE mở thư mục chứa mfa. Tạo thư mục .vscode có file launch.json như sau

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug MFA Align",
      "type": "debugpy",
      "request": "launch",
      "program": "${workspaceFolder}/montreal_forced_aligner/__main__.py",
      "args": ["align", "in_data", "english_mfa", "english_mfa", "out_data", "--clean", "--output_format json"],
      "console": "integratedTerminal",
      "justMyCode": false
    }
  ]
}

Chú ý thay “in_data” bằng đường dẫn thư mục chứa file âm thanh và kịch bản text
còn “out_data” bằng đường dẫn thu mục chứa kết quả sau khi align timestamp

Tham số args thực ra sẽ chạy lệnh

mfa align in_data/ english_mfa english_mfa out_data/ --clean --output_format json 

Bước 2: Trong IDE menu, chọn View > Command Pallete… > Python : Select Interpreter …>
Chọn tiếp Python 3.13.9 (‘mfa-dev’) <-- đây là môi trường conda đã tạo ở các bước trên,

Python Environment
Python Environment

Bước 3: Chạy debug ở file__main.py__ trong thư mục montreal_force_aligner