← Quay lại blog

Độ trễ âm thanh trong trình duyệt web hiện đại: Đo lường độ trễ khứ hồi bằng Web Audio API

PetexSpace

Xử lý âm thanh thời gian thực trên các trình duyệt web đã phát triển vượt bậc, từ các tác vụ phát lại phương tiện cơ bản sang các máy trạm xử lý âm thanh kỹ thuật số (DAW) độ trung thực cao, các công cụ giao tiếp không gian thời gian thực và các bộ máy tổng hợp âm tương tác. Tuy nhiên, việc phát triển các ứng dụng âm thanh tương tác trên nền tảng web mở đòi hỏi phải kiểm soát chặt chẽ độ trễ thời gian giữa các ranh giới phần cứng và phần mềm.

Trong bất kỳ ngữ cảnh âm thanh tương tác nào, độ trễ đại diện cho khoảng thời gian tích lũy từ khi một sự kiện người dùng diễn ra (chẳng hạn như kích hoạt một đầu dò đầu vào hoặc nhấn một phím đàn vật lý) cho đến khi sóng áp suất âm thanh kết quả truyền tới tai họ. Khi độ trễ khứ hồi (round-trip) hoặc độ trễ giám sát (monitoring latency) vượt quá 15 đến 20 mili giây, vỏ não thính giác của con người sẽ nhận thấy sự ngắt quãng thời gian rõ rệt, làm suy giảm khả năng căn nhịp chính xác trong âm nhạc cũng như mức độ hiểu giọng nói.

Tài liệu đặc tả này khảo sát các nền tảng vật lý và hệ điều hành của độ trễ âm thanh kỹ thuật số, mô hình kiến trúc thời gian thực của Web Audio API, phương pháp đo lường độ trễ khứ hồi thực nghiệm thông qua hồi tiếp âm học (acoustic loopback) và các công thức toán học tương quan chéo (cross-correlation), sự đánh đổi kích thước buffer trên hệ điều hành, cùng với các chẩn đoán thực thi trực tiếp trên trình duyệt.

1. Bản chất của độ trễ âm thanh trong các hệ thống kỹ thuật số

Các hệ thống âm thanh kỹ thuật số không thể xử lý sóng áp suất âm thanh dưới dạng điện áp analog liên tục. Thay vào đó, một bộ chuyển đổi analog sang kỹ thuật số (ADC) sẽ lấy mẫu các tín hiệu điện liên tục theo các khoảng thời gian rời rạc (fsf_s, thông thường là 44.100 Hz hoặc 48.000 Hz) và lượng tử hóa từng mẫu thành các biểu diễn bit cố định (chẳng hạn như PCM 16-bit hoặc 24-bit).

Tổng độ trễ xuyên suốt một đường ống âm thanh kỹ thuật số tương tác được chia thành ba giai đoạn riêng biệt:

+-------------------------------------------------------------------------+
|                         INPUT SUBSYSTEM                                 |
|                                                                         |
|  [Acoustic Wave] ---> [Microphone Capsule] ---> [Preamplifier]          |
|                                                      |                  |
|                                                      v                  |
|                                            [Analog-to-Digital (ADC)]    |
|                                                      |                  |
|                                            [Input Hardware Buffer]      |
|                                           (e.g., 128 samples / 2.67 ms) |
|                                                      | Interrupt        |
|                                                      v                  |
|                                            [OS Kernel Driver Stream]    |
+-------------------------------------------------------------------------+
                                                       |
                                                       v
+-------------------------------------------------------------------------+
|                        APPLICATION LAYER                                |
|                                                                         |
|                                            [Browser Process Queue]      |
|                                                      |                  |
|                                                      v                  |
|                                            [AudioWorklet Engine]        |
|                                           (128-sample render quantum)   |
|                                                      | DSP Graph        |
+-------------------------------------------------------------------------+
                                                       |
                                                       v
+-------------------------------------------------------------------------+
|                        OUTPUT SUBSYSTEM                                 |
|                                                                         |
|                                            [OS Kernel Output Mixer]     |
|                                                      |                  |
|                                            [Output Hardware Buffer]     |
|                                           (e.g., 256 samples / 5.33 ms) |
|                                                      |                  |
|                                                      v                  |
|                                            [Digital-to-Analog (DAC)]    |
|                                                      | Reconstruction   |
|                                                      v                  |
|  [Acoustic Wave] <--- [Headphones / Speaker] <--- [Power Amplifier]    |
+-------------------------------------------------------------------------+

Các giai đoạn độ trễ đầu vào, xử lý và đầu ra

  1. Độ trễ đầu vào (TinT_{\text{in}}): Khoảng thời gian cần thiết để ADC lấy mẫu âm thanh, tải các mẫu đã lượng tử hóa vào các thanh ghi FIFO phần cứng, phát tín hiệu ngắt (interrupt) tới máy chủ và truyền buffer vào không gian kernel thông qua ngăn xếp driver âm thanh.
  2. Độ trễ xử lý (TprocT_{\text{proc}}): Thời gian cần thiết để các ứng dụng trong không gian người dùng trộn âm, lọc, biến đổi hoặc tổng hợp dữ liệu âm thanh. Trong các runtime web, điều này tương ứng với quá trình đánh giá đồ thị trên các node âm thanh liên kết với nhau.
  3. Độ trễ đầu ra (ToutT_{\text{out}}): Khoảng thời gian một buffer đầu ra nằm chờ trong hàng đợi bộ trộn của hệ điều hành, hàng đợi driver chia sẻ, bộ chuyển đổi kỹ thuật số sang analog (DAC) và các bộ lọc tái tạo tín hiệu trước khi phát ra dưới dạng tín hiệu âm học analog.

Sự đánh đổi của buffer phần cứng

Phần cứng âm thanh sử dụng các buffer bộ nhớ tuần hoàn (ring buffer) để ngăn ngừa hiện tượng cạn buffer (buffer underrun hoặc dropout). Hiện tượng cạn buffer xảy ra khi hệ điều hành hoặc ứng dụng không kịp cung cấp khối mẫu tiếp theo trước khi phần cứng DAC đọc xong khối hiện tại, dẫn đến các tiếng lách tách hoặc nổ lụp bụp nghe thấy rõ.

Thời lượng buffer TbufferT_{\text{buffer}} được quyết định bởi số lượng mẫu NN và tần số lấy mẫu fsf_s:

Tbuffer=Nfs×1000 msT_{\text{buffer}} = \frac{N}{f_s} \times 1000 \text{ ms}

Đối với một giao diện âm thanh hoạt động ở mức 48.000 Hz48.000 \text{ Hz}:

  • Một buffer 64 mẫu sẽ tạo ra độ trễ buffer 1,33 ms1,33 \text{ ms}.
  • Một buffer 256 mẫu sẽ tạo ra độ trễ buffer 5,33 ms5,33 \text{ ms}.
  • Một buffer 1024 mẫu sẽ tạo ra độ trễ buffer 21,33 ms21,33 \text{ ms}.

Mặc dù việc giảm kích thước buffer giúp hạ thấp độ trễ khứ hồi, nó lại đặt ra yêu cầu thời gian cực kỳ khắt khe đối với hệ điều hành máy chủ. Thread thời gian thực phải thức dậy, thực thi toàn bộ quá trình xử lý và gửi các frame âm thanh mới trong khoảng thời gian rất ngắn đó, nếu không hiện tượng cạn buffer sẽ xuất hiện.

Các ngăn xếp âm thanh của hệ điều hành

Hệ điều hành nền tảng đóng vai trò then chốt trong việc xác định giới hạn độ trễ tối thiểu khả thi:

  • macOS / iOS (CoreAudio): Được xây dựng dựa trên kiến trúc thống nhất có độ trễ thấp. CoreAudio tương tác trực tiếp với phần cứng thông qua các buffer nhỏ, thường xuyên đạt được độ trễ khứ hồi dưới 10 ms10 \text{ ms}.
  • Windows (WASAPI & ASIO): Windows Audio Session API (WASAPI) mặc định hoạt động ở chế độ Shared Mode, trộn âm thanh giữa nhiều ứng dụng desktop thông qua Windows Audio Engine. Điều này tạo ra các hàng đợi xử lý khiến độ trễ tăng lên trong khoảng 20 ms20 \text{ ms} đến 40 ms40 \text{ ms}. Các ứng dụng âm thanh chuyên nghiệp thường bỏ qua bộ trộn chia sẻ này bằng cách sử dụng ASIO (Audio Stream Input/Output) hoặc WASAPI Exclusive Mode để đạt độ trễ dưới 5 ms.
  • Linux (ALSA, PulseAudio, PipeWire): Mặc dù ALSA cung cấp khả năng truy cập kernel cấp thấp trực tiếp, các bản phân phối desktop thường xếp chồng các sound server lên trên. PulseAudio tạo ra độ trễ đệm đáng kể, trong khi PipeWire mang lại cơ chế lập lịch độ trễ thấp, hiện đại và tương thích hoàn toàn với các server âm thanh JACK.

2. Mô hình kiến trúc của Web Audio API

Web Audio API cung cấp một hệ thống định tuyến theo mô đun, nơi các đơn vị xử lý âm thanh, được biểu diễn dưới dạng các đối tượng AudioNode, được liên kết với nhau bên trong một đồ thị có hướng AudioContext.

+------------------------------------------------------------------------+
|                          Web Audio Graph Pipeline                      |
|                                                                        |
|  [MediaStreamSource]                                                   |
|    (Microphone)                                                        |
|         |                                                              |
|         v                                                              |
|   [GainNode] ---> [AudioWorkletNode] ---> [DynamicsCompressorNode]     |
|   (Input Level)   (Impulse Detection)     (Peak Protection)            |
|                                                    |                   |
|                                                    v                   |
|                                          [AudioDestinationNode]        |
|                                             (Hardware Output)          |
+------------------------------------------------------------------------+

Khả năng tự kiểm tra độ trễ nguyên bản của trình duyệt

Các bản sửa đổi hiện đại của đặc tả Web Audio cung cấp các thuộc tính cho phép ứng dụng đánh giá các mức độ trễ nội bộ cơ sở:

  • AudioContext.baseLatency: Một số thực dấu phẩy động độ chính xác kép biểu thị độ trễ xử lý phát sinh bởi chính công cụ đồ thị của trình duyệt. Nó đại diện cho thời lượng của một lượng tử kết xuất âm thanh (render quantum):
Quantum Duration=128fs seconds\text{Quantum Duration} = \frac{128}{f_s} \text{ seconds}

Ở mức 48.000 Hz48.000 \text{ Hz}, 128 mẫu tương đương khoảng 2,67 ms2,67 \text{ ms}.

  • AudioContext.outputLatency: Giá trị ước tính độ trễ do các driver âm thanh của hệ điều hành và buffer đầu ra phần cứng tạo ra. Nó cung cấp khả năng quan sát các hàng đợi của bộ trộn âm thanh đặc thù trên từng nền tảng.

Mặc dù các thuộc tính chỉ đọc này giúp ước lượng độ trễ đầu ra, chúng không thể tính đến các giai đoạn đầu vào phần cứng của microphone, quãng đường di chuyển của sóng âm trong không khí vật lý, hay độ trễ driver riêng biệt của nền tảng.

Từ ScriptProcessorNode chuyển sang AudioWorklet

Các ứng dụng âm thanh web trước đây phụ thuộc vào ScriptProcessorNode, vốn thực thi các hàm callback âm thanh ngay trên thread giao diện người dùng chính (main UI thread) của trình duyệt. Điều này dẫn đến sự mất ổn định thời gian nghiêm trọng: bất cứ khi nào trình duyệt phân tích các phần tử DOM phức tạp, tính toán lại bố cục CSS, hoặc chạy các tác vụ JavaScript nặng, hàm callback âm thanh sẽ bị lỡ hạn chót, gây ra các hiện tượng ngắt quãng âm thanh có thể nghe thấy.

Web audio hiện đại thay thế cấu trúc này bằng AudioWorklet. Một AudioWorkletNode chạy đối tượng AudioWorkletProcessor tương ứng của nó bên trong một thread thời gian thực ưu tiên cao riêng biệt (AudioWorkletGlobalScope). Cơ chế này tách rời hoàn toàn quá trình tổng hợp âm và xử lý tín hiệu khỏi các gián đoạn trên DOM và main thread:

// audio-latency-processor.ts
// Runs in real-time AudioWorkletGlobalScope without main thread interference

class LatencyImpulseProcessor extends AudioWorkletProcessor {
  private sampleCounter: number = 0;
  private triggerSampleIndex: number = 4800; // Trigger after 100ms baseline

  process(inputs: Float32Array[][], outputs: Float32Array[][], parameters: Record<string, Float32Array>): boolean {
    const output = outputs[0];
    const outputChannel = output[0];

    for (let i = 0; i < outputChannel.length; i++) {
      this.sampleCounter++;
      
      // Emit a band-limited Dirac delta impulse marker
      if (this.sampleCounter === this.triggerSampleIndex) {
        outputChannel[i] = 1.0;
        this.port.postMessage({
          type: 'IMPULSE_EMITTED',
          sampleIndex: this.sampleCounter,
          timestamp: currentTime
        });
      } else {
        outputChannel[i] = 0.0;
      }
    }

    return true;
  }
}

registerProcessor('latency-impulse-processor', LatencyImpulseProcessor);

3. Đo lường độ trễ khứ hồi thực nghiệm thông qua hồi tiếp âm học

Do các thuộc tính nội bộ của API chỉ báo cáo các giá trị lý thuyết, việc đo lường độ trễ trong thế giới thực đòi hỏi phải thực hiện thử nghiệm hồi tiếp (loopback) thực nghiệm. Trong một thiết lập hồi tiếp âm học, hệ thống phát một dấu hiệu âm thanh qua loa và ghi lại tín hiệu phản hồi bằng microphone kết nối kèm theo.

+-----------------------------------------------------------------------+
|                      ACOUSTIC LOOPBACK MECHANISM                      |
|                                                                       |
|  [AudioWorklet]                                                       |
|   (Dirac Pulse)                                                       |
|        |                                                              |
|        v                                                              |
|   [DAC Output] ---> [Speaker]                                         |
|                        |                                              |
|                        | Air Gap Acoustic Wave Travel                 |
|                        v                                              |
|   [ADC Input]  <--- [Microphone]                                      |
|        |                                                              |
|        v                                                              |
|  [Captured Buffer]                                                    |
|        |                                                              |
|        v                                                              |
|  [Cross-Correlation DSP Engine: R_xy(tau)]                            |
|        |                                                              |
|        +---> [Global Peak Tau] ===> Measured Latency (ms)             |
+-----------------------------------------------------------------------+

Công thức tương quan chéo

Thay vì phụ thuộc vào cơ chế phát hiện ngưỡng đơn giản (vốn rất dễ kích hoạt sai do tiếng ồn môi trường xung quanh), phương pháp đo độ trễ chuẩn xác sử dụng phép toán tương quan chéo (cross-correlation). Tương quan chéo định lượng mức độ tương đồng giữa hai tín hiệu dưới dạng hàm của độ dịch chuyển thời gian áp dụng cho một trong hai tín hiệu đó.

Gọi x[n]x[n] là tín hiệu thử nghiệm tham chiếu được phát ra từ kênh đầu ra, và y[n]y[n] là tín hiệu liên tục thu được từ microphone đầu vào. Chuỗi tương quan chéo rời rạc Rxy[τ]R_{xy}[\tau] cho độ trễ τ\tau mẫu được định nghĩa là:

Rxy[τ]=∑n=−∞+∞x[n]⋅y[n+τ]R_{xy}[\tau] = \sum_{n=-\infty}^{+\infty} x[n] \cdot y[n + \tau]

Đối với các vector rời rạc hữu hạn có độ dài NN, giá trị này được chuẩn hóa để mang lại các hệ số nằm trong giới hạn [−1.0,+1.0][-1.0, +1.0]:

ρxy[τ]=∑n=0N−1x[n]⋅y[n+τ]∑n=0N−1x2[n]⋅∑n=0N−1y2[n+τ]\rho_{xy}[\tau] = \frac{\sum_{n=0}^{N-1} x[n] \cdot y[n + \tau]}{\sqrt{\sum_{n=0}^{N-1} x^2[n] \cdot \sum_{n=0}^{N-1} y^2[n + \tau]}}

Độ trễ mẫu τpeak\tau_{\text{peak}} làm cực đại hóa hàm tương quan chéo đại diện cho thời gian truyền tín hiệu khứ hồi chính xác:

τpeak=arg⁡max⁡τ(Rxy[τ])\tau_{\text{peak}} = \arg\max_{\tau} \left( R_{xy}[\tau] \right)

Sau khi xác định được τpeak\tau_{\text{peak}}, độ trễ âm thanh khứ hồi TlatencyT_{\text{latency}} theo đơn vị mili giây được tính toán dựa trên tần số lấy mẫu fsf_s:

Tlatency=(τpeakfs)×1000 msT_{\text{latency}} = \left( \frac{\tau_{\text{peak}}}{f_s} \right) \times 1000 \text{ ms}
Cross-Correlation Function R_xy(tau):
R_xy
  ^
  |                          Tau Peak (Exact Hardware Match)
1.0 |                                    |
  |                                   | |
  |      Ambient Floor                | | |               Decay Ringing
0.0 +---~~~~-~~~~---~~~~~~~~~-~~~~~---+ | +--~~~~~---~~~~~~~~~~-~~~~~--> Tau (samples)
  |                                     |
 -1.0 +------------------------------------------------------------------+
                                        <-------- Tau (ms) ------->
// Pure TypeScript cross-correlation engine for latency resolution
export function computeCrossCorrelationLag(
  referenceSignal: Float32Array,
  recordedSignal: Float32Array,
  sampleRate: number
): { lagSamples: number; latencyMs: number; peakCorrelation: number } {
  const refLen = referenceSignal.length;
  const recLen = recordedSignal.length;
  const maxLag = recLen - refLen;

  if (maxLag <= 0) {
    throw new Error('Recorded signal must be longer than the reference signal.');
  }

  // Pre-calculate reference signal energy for normalization
  let refEnergy = 0;
  for (let i = 0; i < refLen; i++) {
    refEnergy += referenceSignal[i] * referenceSignal[i];
  }

  let maxCorrelation = -Infinity;
  let optimalLag = 0;

  for (let tau = 0; tau < maxLag; tau++) {
    let crossSum = 0;
    let windowEnergy = 0;

    for (let n = 0; n < refLen; n++) {
      const sample = recordedSignal[tau + n];
      crossSum += referenceSignal[n] * sample;
      windowEnergy += sample * sample;
    }

    const denominator = Math.sqrt(refEnergy * windowEnergy);
    const normalizedCorr = denominator > 0 ? crossSum / denominator : 0;

    if (normalizedCorr > maxCorrelation) {
      maxCorrelation = normalizedCorr;
      optimalLag = tau;
    }
  }

  const latencyMs = (optimalLag / sampleRate) * 1000;

  return {
    lagSamples: optimalLag,
    latencyMs: Math.round(latencyMs * 100) / 100,
    peakCorrelation: maxCorrelation
  };
}

4. Triệt tiêu pha, cạn buffer và các bộ lọc xử lý phần cứng

Để thu được các phép đo thực nghiệm nhất quán, cần phải tính đến các biến số âm học và sự can thiệp tín hiệu từ phía hệ điều hành.

Ràng buộc âm thanh và vô hiệu hóa DSP phần mềm

Các trình duyệt di động và desktop hiện đại mặc định bật các tính năng xử lý âm thanh tự động nhằm cải thiện độ rõ nét khi hội thoại trực tuyến:

  • Khử tiếng vọng âm học (AEC - Acoustic Echo Cancellation): Một bộ lọc DSP thích ứng có khả năng phát hiện âm thanh phát ra từ loa hệ thống và chủ động trừ nó ra khỏi tín hiệu thu từ microphone. Khi đo lường độ trễ âm thanh, AEC sẽ coi dấu hiệu kiểm tra là tiếng vọng không mong muốn, triệt tiêu nó và làm vô hiệu đỉnh tương quan.
  • Triệt tiêu tiếng ồn (NS - Noise Suppression): Lọc tiếng ồn nền tĩnh (như tiếng quạt hoặc tiếng rền trong phòng). Các dấu hiệu xung tức thời có thể bị suy giảm hoặc làm nhòe pha do các bộ lọc tần số này.
  • Tự động điều chỉnh khuếch đại (AGC - Automatic Gain Control): Tự động điều chỉnh độ nhạy đầu vào của microphone theo thời gian thực. AGC có thể gây ra hiện tượng điều biên, làm biến dạng quá trình chuẩn hóa tương quan chéo.

Để đo chính xác thời gian hoạt động thực của phần cứng thô, các bộ lọc này phải được vô hiệu hóa một cách rõ ràng khi yêu cầu luồng đầu vào âm thanh:

// Request raw, unmanipulated microphone capture stream
async function getCleanAudioCaptureStream(): Promise<MediaStream> {
  const audioConstraints: MediaTrackConstraints = {
    echoCancellation: false,
    noiseSuppression: false,
    autoGainControl: false,
    channelCount: 1,
    sampleRate: 48000,
    latency: 0
  };

  return await navigator.mediaDevices.getUserMedia({
    audio: audioConstraints,
    video: false
  });
}

Độ trôi xung nhịp giữa các bộ dao động thạch anh

Khi thử nghiệm với các thiết bị đầu vào và đầu ra khác nhau (chẳng hạn như microphone condenser chuẩn USB kết hợp với cổng ra analog trên bo mạch chủ), các thành phần phần cứng này hoạt động dựa trên các bộ dao động thạch anh vật lý độc lập.

Dung sai sản xuất gây ra sự chênh lệch tần số nhỏ giữa hai xung nhịp. Một xung nhịp đầu ra chạy ở tần số 48.001 Hz kết hợp với một xung nhịp đầu vào chạy ở tần số 47.998 Hz sẽ gây ra hiện tượng trôi xung nhịp (clock drift) theo thời gian.

Đối với các bài kiểm tra độ trễ trong khoảng thời gian ngắn (100 ms đến 500 ms), độ trôi này là không đáng kể. Tuy nhiên, các hệ thống giám sát liên tục dài hạn phải triển khai cơ chế lấy mẫu lại trên ring buffer hoặc định kỳ ước tính lại độ lệch thời gian để ngăn ngừa sự mất đồng bộ.

5. Công cụ chẩn đoán phần cứng âm thanh của PetexSpace

Việc kiểm tra độ tin cậy của thiết bị ngoại vi, đáp ứng tần số microphone và độ trễ khứ hồi âm thanh đòi hỏi một môi trường chẩn đoán tích hợp hoạt động ổn định trên nhiều cấu hình phần cứng khác nhau.

+------------------------------------------------------------------------+
|                 PetexSpace Audio Verification Pipeline                 |
|                                                                        |
|  [Local AudioContext]                                                  |
|          |                                                             |
|          v                                                             |
|  [Dirac / Chirp Generator]                                             |
|          |                                                             |
|          +------------------------------------+                        |
|          | Output Loop                        | Reference Signal       |
|          v                                    v                        |
|  [Audio Hardware]                   [Memory Ring Buffer]               |
|  (Speaker -> Mic)                             ^                        |
|          |                                    | Input Samples          |
|          +------------------------------------+                        |
|                                                                        |
|                                  |                                     |
|                                  v                                     |
|                   [Web Worker Analysis Engine]                         |
|                   (Cross-Correlation, SNR, Peak)                       |
|                                  |                                     |
|                                  v                                     |
|                    [Local Diagnostic Interface]                        |
|                    (Latency ms, Phase, Jitter)                         |
+------------------------------------------------------------------------+

Công cụ đo độ trễ âm thanh và microphone của PetexSpace cung cấp quy trình kiểm tra bài bản được xây dựng trực tiếp trên Web Audio API:

  1. Hiệu chuẩn âm học: Phát ra âm dò mức thấp để xác thực độ lợi thu của microphone và tỷ lệ tín hiệu trên nhiễu (SNR) môi trường trước khi chạy thử nghiệm đo độ trễ.
  2. Phát xung tín hiệu: Tạo ra một dấu hiệu xung cô lập thông qua AudioWorkletNode, thu nhận phản hồi từ microphone trực tiếp vào một buffer mảng định kiểu (typed buffer) được cấp phát trước.
  3. Tính toán tương quan ngoài thread: Truyền các buffer mẫu thu được sang một Web Worker riêng thông qua cơ chế chuyển quyền sở hữu ArrayBuffer không sao chép (zero-copy), tính toán các đỉnh tương quan chéo mà không làm giật giao diện người dùng hay rớt khung hình hoạt họa.
  4. Phân tích chi tiết độ trễ: Hiển thị độ trễ khứ hồi đo được song song với các chỉ số baseLatency và outputLatency do trình duyệt báo cáo. Người dùng có thể đánh giá kết quả này cùng với bộ công cụ PetexSpace để kiểm tra chẩn đoán đầu vào phần cứng trên các thiết bị được kết nối.

Kiến trúc bảo mật và xử lý cục bộ

Các luồng âm thanh có thể thu lại những âm thanh môi trường nhạy cảm và các cuộc trò chuyện riêng tư. Tuân thủ theo các nguyên tắc kiến trúc của PetexSpace, toàn bộ quá trình xử lý âm thanh đều được thực thi hoàn toàn ở phía client-side.

Các buffer âm thanh thu được chỉ lưu tạm thời trong bộ nhớ khả biến (Float32Array), được phân tích ngay trên thiết bị và xóa bỏ lập tức sau đó. Hoàn toàn không có dữ liệu ghi âm microphone, dữ liệu phân tích phổ hay định danh phần cứng nào được gửi tới các server từ xa. Điều này đảm bảo các nhà phát triển, kỹ sư âm thanh và quản trị viên hệ thống có thể đo lường hiệu năng phần cứng với quyền tự chủ dữ liệu tuyệt đối.

CryptographyXác thựcSecurity

Kiến trúc của Mật khẩu Một lần Dựa trên Thời gian: Khám phá RFC 6238 và Cơ chế Tạo HMAC

Phân tích toán học và giao thức toàn diện về Mật khẩu Một lần Dựa trên Thời gian (TOTP) theo chuẩn RFC 6238, khám phá kỹ thuật dynamic truncation, bộ đếm bước HMAC-SHA1, xử lý lệch đồng hồ và thực thi an toàn ngay trên trình duyệt.

PetexSpace
CryptographyData EncodingMã QR

Giải phẫu mã QR: Cơ chế sửa lỗi Reed-Solomon và mã hóa ma trận

Khám phá chuyên sâu về mặt toán học của mã QR chuẩn ISO/IEC 18004, phân tích chi tiết số học trường Galois GF(2^8), đa thức sinh, cơ chế sửa lỗi Reed-Solomon và kỹ thuật kết xuất ma trận ngay trên trình duyệt.

PetexSpace
CryptographyWeb CryptoSecurity

Tính ngẫu nhiên mật mã học trong trình duyệt: Math.random so với crypto.getRandomValues

Nghiên cứu chuyên sâu về kiến trúc giữa bộ tạo số giả ngẫu nhiên (PRNG) và bộ tạo số giả ngẫu nhiên an toàn về mặt mật mã (CSPRNG) trong môi trường runtime trình duyệt, phân tích chi tiết xorshift128+, các cuộc tấn công tái tạo trạng thái và Web Cryptography API.

PetexSpace
CryptographyData EncodingBase32

So sánh Base32 và Base64: Khác biệt cấu trúc, quy tắc đệm và ứng dụng mật mã học

Đặc tả kỹ thuật chuyên sâu về các chuẩn mã hóa nhị phân sang văn bản theo RFC 4648, đối chiếu cơ chế đóng gói bitwise, ma trận đệm (padding), tính công thái học của bảng chữ cái và quá trình thực thi trực tiếp trên trình duyệt giữa Base32 và Base64.

PetexSpace