Nhiệm vụ: Nghiên cứu các đặc trưng đo lường được của tín hiệu giọng nói trước khi xây dựng bộ tổng hợp mới

Nghiên cứu các đặc trưng đo lường được của tín hiệu giọng nói trước khi xây dựng bộ tổng hợp mới

Nghiên cứu lý thuyết về các thuộc tính của PCM và tín hiệu giọng nói mà chúng ta có thể đảm bảo đo lường được theo thời gian và tần số trước khi thiết kế bộ tạo tín hiệu mới.

Bối cảnh

Hiện tại chúng ta chưa xây dựng bộ tổng hợp mới và cũng không cố gắng nhận diện ngay chữ cái/âm vị. Mục tiêu của giai đoạn này là hiểu một cách nền tảng chính xác những gì chúng ta có thể đo lường một cách đảm bảo từ bản ghi âm microphone, bằng những phương pháp nào và với độ chính xác thời gian/tần số ra sao.

Giả thuyết làm việc: trước hết cần xây dựng một decoder/analyzer tốt như một thiết bị đo đạc, tìm ra các đặc trưng ổn định của các âm thanh quen thuộc và chỉ sau đó mới đi theo chiều ngược lại — xây dựng các bộ tạo (generators) tái tạo lại các đặc trưng này.


Mô hình tín hiệu cơ bản

Tại sampleRate = 48 kHz, một giây PCM đơn (mono) tương ứng với 48.000 mẫu (samples) liên tiếp.

Mỗi sample là một giá trị biên độ tức thời cuối cùng. Sau khi trộn các nguồn bên trong, thông tin về việc chính xác các thành phần nào tạo nên một sample riêng lẻ đã bị mất đi.

Ví dụ, cùng một kết quả cuối cùng có thể thu được từ các tổng bên trong khác nhau. Do đó, việc khôi phục ngược lại các nguyên nhân riêng lẻ từ một sample duy nhất là bất khả thi.

Thông tin hữu ích chỉ xuất hiện khi phân tích quỹ đạo theo thời gian.

Cần phân biệt rõ:

  • x[n] — độ lệch hiện tại của waveform;
  • Δx[n] = x[n] - x[n-1] — hướng và tốc độ thay đổi;
  • Δ²x[n] — sự thay đổi tốc độ / độ dốc của mặt sóng (transient);
  • cấu trúc thời gian dài hạn;
  • cấu trúc tần số.

Một số 0 đơn lẻ không có nghĩa là sự im lặng: bên trong dao động, đó có thể là thời điểm đi qua điểm cân bằng với tốc độ lớn. Sự nghỉ ngơi là một chuỗi kéo dài gần mốc số 0 mà không có sự thay đổi đáng kể.


Những gì có thể đo lường trực tiếp trong miền thời gian

Ngay trước khi dùng FFT, chúng ta đã có thể tính toán các đặc trưng một cách đảm bảo trên các cửa sổ ngắn:

  • RMS / năng lượng tổng;
  • peak amplitude (biên độ đỉnh);
  • mean absolute amplitude (biên độ tuyệt đối trung bình);
  • zero crossing rate (tỷ lệ cắt qua số không);
  • mean(|Δx|) — tốc độ thay đổi trung bình của waveform;
  • max(|Δx|) — độ dốc của mặt sóng mạnh nhất;
  • sai phân bậc hai / độ "gia tốc" cục bộ;
  • variance (phương sai);
  • crest factor (hệ số đỉnh);
  • autocorrelation (tự tương quan) và các cực đại của nó;
  • thời lượng của các đoạn im lặng / năng lượng thấp;
  • onset / sự xuất hiện đột ngột của năng lượng;
  • decay / sự suy giảm sau sự kiện.

Các chỉ số này tiềm năng đã phân tách các loại cơ chế khác nhau:

  • âm có thanh (voiced) kéo dài;
  • đoạn tiếng ồn/âm sát (fricative/noise) kéo dài;
  • âm nổ ngắn (burst/plosive);
  • khoảng lặng/đóng (silence/closure);
  • sự rung định kỳ (periodic tremor).

Phân tích tần số

Tần số không được lưu trữ trong PCM dưới dạng một trường riêng biệt. Nó được tính toán từ tính lặp lại của waveform.

Đối với một cửa sổ có độ dài N mẫu, có thể sử dụng:

  • Fourier/FFT — các thành phần chu kỳ nào hiện diện;
  • autocorrelation — waveform tự giống chính nó tại độ trễ (lag) nào;
  • filter bank — năng lượng trong các dải tần được định nghĩa trước.

Đối với FFT, sự đánh đổi là rất quan trọng:

  • cửa sổ dài → độ phân giải tần số tốt, định vị thời gian kém;
  • cửa sổ ngắn → định vị thời gian tốt, độ phân giải tần số thô hơn.

Ví dụ:

  • 1 s → khoảng 1 Hz;
  • 100 ms → khoảng 10 Hz;
  • 20 ms → khoảng 50 Hz;
  • 10 ms → khoảng 100 Hz.

Đối với giọng nói, có lẽ sẽ cần phân tích đa tỷ lệ (multi-scale): nhận diện burst nhanh ở 5–10 ms, pitch/formants ở 20–50 ms, cấu trúc ổn định dài hạn ở 100+ ms.


Các kênh tần số / bộ lọc thính giác (auditory filter bank)

Thay vì hàng nghìn FFT bins, việc xây dựng một tập hợp giới hạn các dải tri giác (perceptual bands) sẽ hợp lý hơn, ví dụ 24–40 dải theo thang đo logarit/ERB.

Ý tưởng cơ bản:

PCM -> cửa sổ ngắn -> FFT/filter bank -> năng lượng của mỗi dải theo thời gian.

Chúng ta nhận được một tập hợp các kênh cố định:

Band 1 energy(t) Band 2 energy(t) ...

Số lượng kênh là cố định, trong khi mức độ hoạt động trong các kênh đó biến động theo thời gian.

Lớp trực quan đầu tiên có thể là biểu đồ nhiệt (heatmap):

  • X = thời gian;
  • Y = dải tần số;
  • độ sáng = năng lượng.

Không cần phải mã hóa ngay nhiều chỉ số bằng độ dày hoặc màu sắc của một đường cong duy nhất. Giá trị dọc cơ bản của kênh có thể đơn giản là năng lượng được chuẩn hóa 0..1.


Sự khác biệt quan trọng: Tổng năng lượng và sự phân bố của nó

Uint8 0..255 là định dạng của một sample tức thời, chứ không phải là "ngân sách năng lượng" giữa các dải.

Để phân tích, sẽ hữu ích hơn nếu tách biệt:

  • totalEnergy của cửa sổ;
  • phân bố năng lượng tương đối giữa các dải.

Ví dụ:

Frame { totalEnergy, bands[] }

trong đó khi chuẩn hóa, ta có thể có:

sum(bands) ≈ 1.

Điều này cho phép chúng ta nhìn nhận độc lập:

  • tín hiệu mạnh đến mức nào nhìn chung;
  • năng lượng đã dịch chuyển về phần nào của phổ tần số.

Tìm kiếm các nhóm phổ (spectral groups)

Không nên cứng nhắc lấy top N dải mạnh nhất.

Một sơ đồ hợp lý hơn:

  1. tính toán tất cả các dải;
  2. loại bỏ các giá trị nằm dưới ngưỡng tiếng ồn thích ứng (noise floor/threshold);
  3. tìm các cực đại cục bộ;
  4. gộp các dải hoạt động liền kề thành các nhóm phổ;
  5. liên kết các nhóm tương tự giữa các cửa sổ thời gian liền kề.

Bằng cách này, từ các kênh cảm biến cố định, ta thu được các đối tượng phổ trôi nổi (spectral objects):

  • tần số trung tâm (center frequency);
  • độ rộng băng thông (bandwidth);
  • năng lượng;
  • thời lượng;
  • độ ổn định;
  • onset/decay;
  • tính chất chu kỳ / giống tiếng ồn (periodic/noise-like character).

Điều này gần gũi hơn với cách hệ thống thính giác nhóm các thành phần thành các đối tượng, hơn là việc chỉ chọn đơn giản mười bins mạnh nhất.


Giả thuyết về các cơ chế phát âm

Thay vì hàng chục điều khiển dạng vô hướng (scalar controls) của bộ tổng hợp trong tương lai, đề xuất là hãy tư duy theo các cơ chế hoặc bộ tạo mang ý nghĩa sinh lý/âm học riêng biệt.

Ví dụ:

  • frication/constriction (xát/hẹp) — cơ chế tiếng ồn kéo dài;
  • plosive release (nổ) — burst cực ngắn sau khi đóng/tích áp suất;
  • voicing (hữu thanh) — nguồn chu kỳ ổn định;
  • trill (rung) — các ngắt quãng/điều chế tựa chu kỳ lặp đi lặp lại;
  • nasal coupling (cộng hưởng mũi) — cấu trúc phổ đặc trưng;
  • guttural mechanism (cơ chế họng) — loại kích thích/cộng hưởng riêng biệt.

Ý tưởng chủ chốt: các cơ chế phải khác nhau không chỉ ở biên độ, mà ở các đặc trưng quan sát được:

  • thời lượng đặc trưng;
  • dải tần số;
  • tính chu kỳ (periodicity);
  • onset/decay;
  • độ rộng phổ;
  • độ ổn định;
  • tính lặp lại theo thời gian.

Khi đó, decoder tiềm năng sẽ có thể tách chúng ra khỏi PCM chung dựa trên các chữ ký động học (dynamic signatures).


Kế hoạch thí nghiệm

Ban đầu chỉ làm việc với microphone và các ngữ liệu phát âm đã biết.

Thứ tự thực hiện:

  1. Ghi âm các đoạn ngắn 0.5–1.5 s.
  2. Phát âm các âm thanh/âm tiết/từ đã biết.
  3. Xây dựng các chỉ số thời gian và tần số.
  4. Tìm kiếm trực quan các chữ ký ổn định.
  5. Kiểm tra các chữ ký tương tự ở các từ khác và các bối cảnh lân cận.
  6. Kiểm tra khả năng phân biệt giữa các lớp gần nhau (С/Ш [S/Sh], П/Т/К [P/T/K], hữu thanh/vô thanh, v.v.).
  7. Không gọi một mẫu (pattern) là "chữ cái" cho đến khi nó chuyển dịch được giữa các bối cảnh khác nhau.
  8. Đạt được khả năng phân biệt cao trước hết cho một người, một microphone và trong các điều kiện có kiểm soát.
  9. Chỉ sau đó mới thiết kế bộ tạo ngược lại (reverse generator).

Decoder phải trở thành một thiết bị đo đạc và sau đó là bài kiểm tra tự động cho bộ tạo:

human audio -> decoder -> mechanism signature

synthetic audio -> decoder -> mechanism signature

Việc so sánh được thực hiện trong không gian các đặc trưng đo lường được, chứ không chỉ mang tính chủ quan "giống/không giống".


Tiêu chí chính của giai đoạn hiện tại

Không phải nhận dạng văn bản và cũng không phải tổng hợp giọng nói.

Chúng ta cần hiểu rõ:

những đặc trưng nào mà chúng ta thực sự có thể đo lường một cách ổn định và tái lặp từ PCM, trên các thang thời gian nào, và những đặc trưng nào cho phép phân biệt các cơ chế giọng nói ổn định.

Ở giai đoạn này, việc xác nhận tính đo lường được và khả năng phân biệt quan trọng hơn việc thêm các thực thể mới vào bộ tạo.

Ворклоги

Tóm tắt trung gian: Thử nghiệm hiện tại đã thất bại

Ở giai đoạn hiện tại, không có cảm biến nào được triển khai/đề xuất cung cấp bất kỳ thông tin hữu ích, ổn định về mặt trực quan hoặc có thể diễn giải để phân biệt các âm thanh trong lời nói.

Điều này cần được ghi nhận là một kết quả tiêu cực thay vì cố gắng "ép" thử nghiệm với các phương pháp phỏng đoán (heuristics) mang tính lạc quan.

Những gì đã thử nghiệm

Các cảm biến theo miền thời gian đã được thảo luận và/hoặc đề xuất:

  • RMS / năng lượng trung biên;
  • biên độ đỉnh (peak amplitude);
  • tỷ lệ cắt qua không (zero crossing rate);
  • trung bình |Δx|;
  • tối đa |Δx|;
  • tự tương quan / tính tuần hoàn (autocorrelation / periodicity);
  • ước tính cao độ (pitch estimate).

Sau đó là nỗ lực xây dựng một sibilanceSensor thô cho tỷ lệ tín hiệu trên tạp âm (SNR) thông qua:

  • năng lượng tần số cao;
  • tâm phổ (spectral centroid);
  • tách năng lượng dưới/trên một ngưỡng quy ước;
  • nồng độ phổ (spectral concentration).

Tiếp theo, một cảm biến dải tần thô với 12 dải logarit từ khoảng 60 Hz đến 14 kHz đã được đề xuất.

Kết quả thực tế: chưa có phương pháp nào trong số này cho thấy một bức tranh hữu ích dù chỉ là xấp xỉ, điều mà lẽ ra phải cho phép chúng ta tự tin khẳng định rằng các phép đo phản ánh sự khác biệt giữa các âm thanh đã phát âm được biết trước.


Các nguyên nhân chính dẫn đến thất bại

1. AI bắt đầu "thiết kế giải pháp" quá sớm thay vì thực hiện thử nghiệm đo lường

Sai lầm chính là việc chuyển đổi quá sớm từ câu hỏi "chúng ta thực sự thấy gì trong dữ liệu?" sang câu hỏi "cảm biến nào nên phát hiện SNR?".

Kết quả là xuất hiện các phương pháp phỏng đoán như ngưỡng quy ước 5.5 kHz, sibilance-presence, tập hợp các dải tần được chọn trước và các biểu đồ kỳ vọng trước khi thu được dù chỉ một chuỗi đo lường thực tế mang tính xác thực.

Điều này lặp lại vấn đề đã từng quan sát thấy: mã nguồn trông có vẻ hợp lý, nhưng nền tảng bên dưới lại chưa được chứng minh bằng thực nghiệm.

2. Các đặc trưng tự bản thân có thể đo lường được, nhưng giá trị chẩn đoán của chúng chưa được chứng minh

RMS, ZCR, |Δx|, tự tương quan và các chỉ số phổ thực sự được tính toán chính xác như các thuộc tính của dạng sóng (waveform). Nhưng điều này không có nghĩa là chúng hữu ích trong việc phân biệt các âm vị hoặc cơ chế phát âm trong một bản ghi cụ thể.

Ví dụ, hai âm thanh khác nhau có thể có RMS/ZCR rất giống nhau, trong khi cùng một âm thanh lại có thể thay đổi đáng kể các giá trị này tùy thuộc vào âm lượng, khoảng cách đến micrô và ngữ cảnh.

3. Chuẩn hóa có thể phá hủy chính thông tin mà chúng ta đang cố gắng nhìn thấy

Nỗ lực chuẩn hóa năng lượng dải tần trong mỗi khung hình sao cho tổng bằng khoảng 1 giúp việc trực quan hóa phân bố phổ trở nên thuận tiện, đồng thời lại xóa bỏ thông tin về cường độ tuyệt đối.

Khi so sánh âm xì (sibilant) và âm không xì, bản thân năng lượng tiếng ồn tuyệt đối có thể là một đặc trưng quan trọng.

Chúng ta không thể quyết định trước thành phần tín hiệu nào là "thành phần tỷ lệ gây nhiễu" cho đến khi đã kiểm tra chúng bằng thực nghiệm.

4. Cửa sổ thời gian quá thô

Cửa sổ cố định 20–40 ms rất thuận tiện về mặt kỹ thuật, nhưng các cơ chế phát âm khác nhau hoạt động ở các thang đo khác nhau:

  • tiếng nổ (burst) có thể chỉ chiếm vài mili-giây;
  • cao độ yêu cầu nhiều chu kỳ;
  • cấu trúc định dạng (formant) yêu cầu một sự đánh đổi khác;
  • tiếng ồn xát (fricative noise) bền vững có thể kéo dài hàng trăm mili-giây.

Một thang đo cửa sổ duy nhất chắc chắn sẽ che khuất một phần các sự kiện.

5. Dải tần quá thô

12 dải như 2.5–4 kHz, 4–6.3 kHz, 6.3–10 kHz có thể rộng đến mức sự khác biệt về phổ cục bộ thực tế bên trong chúng đơn giản là biến mất.

Đồng thời, việc nhảy thẳng đến hàng chục dải mà không có lợi ích được chứng minh sẽ chỉ tạo ra nhiều dữ liệu hơn chứ không mang lại sự thấu hiểu sâu sắc hơn.

6. Chưa có quy trình thử nghiệm chuẩn

Hiện vẫn thiếu một tập hợp nghiêm ngặt các bản ghi so sánh:

  • cùng một micrô;
  • cùng một khoảng cách;
  • cùng một âm lượng;
  • nhiều lần lặp lại của cùng một âm thanh;
  • một số âm thanh khác nhau;
  • lưu trữ dữ liệu PCM gốc;
  • cùng một cách xử lý;
  • khả năng chồng lớp/so sánh các chỉ số giữa các lần lặp lại.

Nếu không có điều này, việc phân biệt một đặc trưng âm vị ổn định với sự biến thiên ngẫu nhiên của bản ghi là điều bất khả thi.

7. Cho đến nay mới chỉ phân tích "một bản ghi duy nhất" thay vì thống kê các lần lặp lại

Một biểu đồ đơn lẻ hầu như không chứng minh được điều gì.

Chúng ta cần ít nhất vài lần lặp lại của mỗi lớp và so sánh các phân bố đặc trưng:

  • độ biến thiên trong cùng một lớp (intra-class);
  • khoảng cách giữa các lớp (inter-class);
  • tính ổn định theo thời gian;
  • độ nhạy đối với âm lượng và micrô.

Nếu độ phân tán của cùng một âm thanh lớn hơn sự khác biệt giữa hai âm thanh, thì cảm biến đó vô dụng đối với nhiệm vụ của chúng ta.

8. Gắn kết quá sớm với các chữ cái

С, Ш, Ф là các lớp kiểm thử hữu ích, nhưng một cảm biến không nên bắt đầu bằng giả định về một chữ cái.

Cách đúng đắn hơn là trước tiên tìm ra các khác biệt khách quan giữa các tập bản ghi, rồi sau đó mới xem xét chúng tương ứng như thế nào về mặt cấu âm và ngữ âm.

9. Các vấn đề tiềm ẩn với chính audioData gốc

Trước khi đưa ra các kết luận tiếp theo, cần phải xác minh riêng biệt:

  • audioData thực sự chứa gì;
  • đó có thực sự là dữ liệu PCM từ micrô hay không;
  • kiểu dữ liệu (Uint8, Float32, hoặc khác);
  • độ dịch tâm/DC chính xác (center/DC offset);
  • sampleRate thực tế;
  • trước khi phân tích, có sự xử lý nào từ trình duyệt/micrô hay không: AGC, khử tiếng ồn (noise suppression), khử tiếng vọng (echo cancellation);
  • audioData có phải là kết quả từ AnalyserNode với ngữ nghĩa bị giới hạn/thay đổi hay không.

Nếu tín hiệu đầu vào đã được tự động chuẩn hóa hoặc lọc bởi trình duyệt, điều này có thể thay đổi hoàn toàn các đặc trưng quan sát được.

10. Trực quan hóa cũng có thể che giấu sự khác biệt

Nếu mỗi cảm biến tự chọn dải normalized từ 0 đến 1, về mặt trực quan, bất kỳ sự khác biệt nhỏ nào cũng có thể trông có vẻ đáng kể, trong khi những khác biệt tuyệt đối lớn lại trông giống nhau.

Đối với một công cụ nghiên cứu, các giá trị thô đi kèm đơn vị đo lường phải được đặt lên hàng đầu, trong khi việc chuẩn hóa trực quan nên là một lớp riêng biệt và minh bạch.


Những gì chúng tôi coi là bước đi tiếp theo đúng đắn

Không viết thêm một "cảm biến thông minh" nào nữa.

Đầu tiên, hãy xây dựng cơ sở hạ tầng thử nghiệm tối thiểu:

  1. lưu trữ một vài bản ghi thô ngắn với nhãn được biết trước;
  2. đảm bảo nắm rõ định dạng PCM và sampleRate;
  3. có khả năng vẽ dạng sóng (waveform) gốc mà không qua biến đổi;
  4. có khả năng tạo biểu đồ phổ chi tiết/STFT thông thường mà không cố gắng phân loại;
  5. so sánh song song một vài lần lặp lại của cùng một âm thanh;
  6. chỉ sau khi phát hiện trực quan được một sự khác biệt ổn định mới tách nó thành một sensor-helper riêng biệt;
  7. đánh giá cảm biến dựa trên thống kê các lần lặp lại thay vì chỉ dựa vào một biểu đồ thành công đơn lẻ.

Kết luận chính của giai đoạn hiện tại:

hiện chưa có cơ sở để khẳng định rằng các cảm biến được đề xuất cung cấp thông tin hữu ích cho việc nhận diện âm thanh. Thử nghiệm cần được đưa trở lại mức cơ bản hơn: trước tiên là quan sát trung thực dạng sóng và phổ của các bản ghi thực tế, sau đó mới trích xuất những chỉ số nào mà tính hữu ích của chúng đã được xác thực bằng dữ liệu có thể lặp lại.