- Resample microphone input from the actual browser AudioContext sample rate to 16k before sending it to the speech proxy.
- Encode speech input as 16-bit PCM and send it in small 1280-byte frames instead of relying on the browser to create a 16k audio context.
- Flush pending audio before sending the standard Xunfei IAT end frame.
- Extract PCM helpers and cover downsampling, PCM encoding, base64 conversion, and byte concatenation with unit tests.
- Update report editor, testing, and progress documentation for the corrected speech audio pipeline.