Repository navigation
v2.0.6 — .opus voice notes, actually working this time
Finishes the .opus fix that v2.0.5 only got halfway. If you upgraded to 2.0.5 for voice-message support, upgrade again — it did not actually work.
🐛 The fix
.opus audio still failed on 2.0.5, one step later in the pipeline (#69)
2.0.5 fixed file detection and segment containers, so the file finally reached the transcription provider. OpenAI then rejected it:
RuntimeError: OpenAI API error: Unsupported file format opus
Its accepted extensions for /v1/audio/transcriptions are flac, m4a, mp3, mp4, mpeg, mpga, oga, ogg, wav, webm. Ogg is on the list; opus is not. The container and codec were never the problem — only the name.
Confirmed by uploading the same bytes twice with the Content-Type held constant and only the filename changed:
| Upload | Result |
|---|---|
filename=x.opus |
Invalid file format |
filename=x.ogg |
transcribes |
.opus is Opus-in-Ogg, so .ogg is not a disguise — it is the container's own name. Ogg-family audio is now presented to the provider under an accepted extension. For files short enough to skip splitting this goes through a symlink, so your original file is never renamed, copied or modified. Segments inherit the same mapping, which keeps their stream copy valid.
Verified end to end against the live OpenAI API on both paths that were broken — a short voice note and a 700-second file that exercises segmentation — including with stt_model = "gpt-transcribe", which was a double failure before 2.0.5.
⚠️ Breaking changes
None. No public exports, CLI flags, MCP tool signatures or config keys changed.
🙏 Thanks
To the reporter of #69, who found this, isolated it to the filename with a byte-identical cp to .ogg, and reopened the issue rather than letting a half-fix stand.
Full details in the CHANGELOG.
Install: pip install content-core==2.0.6
Extras: content-core[docling], [crawl4ai], [langchain]
Zero-install: uvx content-core extract <source>
MCP: uvx content-core mcp