Skip to content

Add GPT Transcribe support - #228

Merged
goodroot merged 5 commits into
goodroot:mainfrom
spencer-thompson:gpt-transcribe
Aug 1, 2026
Merged

Add GPT Transcribe support#228
goodroot merged 5 commits into
goodroot:mainfrom
spencer-thompson:gpt-transcribe

Conversation

@spencer-thompson

Copy link
Copy Markdown
Contributor

Add GPT Transcribe support

Follow-up to #226.

Summary

  • add gpt-transcribe to the OpenAI realtime setup catalog as the recommended general-purpose option
  • configure committed-turn transcription with language hints, prompt context, manual commits, and 24 kHz PCM audio
  • centralize OpenAI transcription-model capabilities so payloads, mode guards, and preview behavior stay aligned
  • keep GPT Live Transcribe as the higher-cost continuous-preview option and GPT Realtime Whisper for legacy
    compatibility
  • update configuration documentation, schema descriptions, and regression coverage

Model-specific behavior

GPT Transcribe uses the existing scalar language setting as a single-entry languages hint and does not send the
legacy singular language field.

Its prompt uses the existing active-language fallback:

whisper_prompt_<active language> → whisper_prompt → omitted

Language and prompt updates are sent together so language changes cannot use mismatched context.

Sessions use manual turn detection and explicitly commit the audio buffer when recording stops. GPT Transcribe omits the
live-only delay field and does not enable waveform partial previews because transcription begins after the committed
turn.

All dedicated OpenAI transcription models are restricted to realtime_mode: "transcribe".

Model positioning

  • GPT Transcribe — recommended for most users; accurate, fast, inexpensive committed-turn transcription
  • GPT Live Transcribe — continuous live deltas and the best OSD previews; higher cost
  • GPT Realtime Whisper — legacy compatibility

No new configuration keys or migration are introduced. Profiles, keywords, and a dedicated GPT Transcribe prompt setting
remain outside this change.

References:

Validation

  • exact GPT Transcribe session payload
  • singular-to-array language conversion
  • language-specific prompt, global fallback, and prompt omission
  • manual turn detection and explicit audio commit
  • detected-language completion metadata
  • transcription-only mode guard
  • recommended setup ordering
  • waveform partial-preview exclusion
  • configuration schema/default synchronization
  • live microphone/OpenAI end-to-end test

Focused validation:

python -m unittest -v tests.test_realtime_client tests.test_elevenlabs_pill_preview tests.test_setup_command_scope tests.test_config_schema_sync

Result: 57 tests passed.

Full validation:

python -m unittest discover -s tests -v

Result: 396 of 398 tests passed. The two untouched SuspendMonitorLifecycleTests error in this environment because the
optional D-Bus/GLib bindings are unavailable, leaving suspend_monitor.DBusGMainLoop undefined for their patch target.

@spencer-thompson
spencer-thompson marked this pull request as ready for review July 31, 2026 23:24
@goodroot
goodroot merged commit e43248d into goodroot:main Aug 1, 2026
2 checks passed
@goodroot

goodroot commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Thanks @spencer-thompson !

@spencer-thompson

Copy link
Copy Markdown
Contributor Author

Of course! I still want to add the dynamic scriptable prompt, but I haven't figured out how I want to do it yet.

@goodroot

goodroot commented Aug 1, 2026

Copy link
Copy Markdown
Owner

@spencer-thompson Might be wise to create an issue for the "what we want to do" part. And then we can look at proposals before getting to a PR. 💯

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants