On Linux + PipeWire, pi-transcribe live microphone dictation almost always outputs:
Environment
OS: Arch Linux / Omarchy
Kernel: 7.1.8-arch1-3
Node.js: v26.7.0
Audio server: PulseAudio on PipeWire 1.6.8
Default source: alsa_input.pci-0000_06_00.6.analog-stereo
PvRecorder: @picovoice/pvrecorder-node@1.2.9
Backend: transcribe-cpp@0.2.1
pi-transcribe settings:
{
"preferredLanguages": ["zh"],
"transcriptionLanguage": "zh",
"microphone": {
"type": "device",
"name": "Ryzen HD Audio Controller 模拟立体声",
"occurrence": 0
},
"model": {
"id": "Qwen3-ASR-1.7B",
"path": "Qwen3-ASR-1.7B-Q5_K_M.gguf"
}
}
System sources:
alsa_output.pci-0000_06_00.6.analog-stereo.monitor
alsa_input.pci-0000_06_00.6.analog-stereo
Verified
System microphone recording works:
parecord --file-format=wav test.wav
aplay test.wav
The recorded WAV contains clear speech.
The ASR model works:
The same Chinese WAV is transcribed correctly.
The selected microphone in pi-transcribe is the actual input device:
Ryzen HD Audio Controller 模拟立体声
It is not a monitor source.
Live capture issue
I saved the final live microphone PCM right before sending it to ASR:
/tmp/pi-transcribe-debug.wav
The WAV format is valid:
But the content is all-zero PCM. Example stats:
{
"samples": 49664,
"seconds": 3.104,
"peak": 0,
"rms": 0,
"zeroRatio": 1
}
Running file transcription on this debug WAV also returns:
So the observed behavior is:
PvRecorder live path -> all-zero PCM -> ASR outputs “嗯。”
while:
parecord recording -> valid speech WAV -> same ASR model transcribes Chinese correctly
Locally, changing live capture from PvRecorder to:
parecord --raw --format=s16le --rate=16000 --channels=1
then converting Int16 PCM to Float32 and sending it to the same backend makes Chinese live dictation work correctly.
On Linux + PipeWire, pi-transcribe live microphone dictation almost always outputs:
Environment
pi-transcribe settings:
{ "preferredLanguages": ["zh"], "transcriptionLanguage": "zh", "microphone": { "type": "device", "name": "Ryzen HD Audio Controller 模拟立体声", "occurrence": 0 }, "model": { "id": "Qwen3-ASR-1.7B", "path": "Qwen3-ASR-1.7B-Q5_K_M.gguf" } }System sources:
Verified
System microphone recording works:
The recorded WAV contains clear speech.
The ASR model works:
The same Chinese WAV is transcribed correctly.
The selected microphone in pi-transcribe is the actual input device:
It is not a monitor source.
Live capture issue
I saved the final live microphone PCM right before sending it to ASR:
The WAV format is valid:
But the content is all-zero PCM. Example stats:
{ "samples": 49664, "seconds": 3.104, "peak": 0, "rms": 0, "zeroRatio": 1 }Running file transcription on this debug WAV also returns:
So the observed behavior is:
while:
Locally, changing live capture from
PvRecorderto:then converting Int16 PCM to Float32 and sending it to the same backend makes Chinese live dictation work correctly.