Some checks failed
Build App / build-macos (push) Successful in 2m21s
Build App / build-windows (push) Successful in 3m24s
Build App / sync-to-github (push) Has been cancelled
Build App / build-linux (push) Has been cancelled
Build Container / build-container (push) Successful in 54s
Enables Claude Code's /voice command inside Docker containers by
capturing microphone audio in the Tauri webview and streaming it
into the container via a FIFO pipe.
Container: fake rec/arecord shims read PCM from a FIFO instead of
a real mic. Audio bridge exec writes PCM from Tauri into the FIFO.
Frontend: getUserMedia() + AudioWorklet captures 16kHz mono PCM
and streams it to the container via invoke("send_audio_data").
UI: "Mic Off/On" toggle button in the terminal view.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
18 lines
628 B
JavaScript
18 lines
628 B
JavaScript
class AudioCaptureProcessor extends AudioWorkletProcessor {
|
|
process(inputs, outputs, parameters) {
|
|
const input = inputs[0];
|
|
if (input && input.length > 0 && input[0].length > 0) {
|
|
const samples = input[0]; // Float32Array, mono channel
|
|
const int16 = new Int16Array(samples.length);
|
|
for (let i = 0; i < samples.length; i++) {
|
|
const s = Math.max(-1, Math.min(1, samples[i]));
|
|
int16[i] = s < 0 ? s * 0x8000 : s * 0x7FFF;
|
|
}
|
|
this.port.postMessage(int16.buffer, [int16.buffer]);
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
|
|
registerProcessor('audio-capture-processor', AudioCaptureProcessor);
|