Skip to content

feat(voice): add OpenAI speech-to-text - #232

Merged
johnmatthewtennant merged 24 commits into
mainfrom
add-openai-stt-tts
Aug 30, 2026
Merged

feat(voice): add OpenAI speech-to-text#232
johnmatthewtennant merged 24 commits into
mainfrom
add-openai-stt-tts

Conversation

@johnmatthewtennant

@johnmatthewtennant johnmatthewtennant commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds OpenAI realtime speech-to-text as a Voice Conversation input backend.

  • Adds an OpenAI API-key field in Voice settings.
  • Uses the same Berd-owned OpenAI voice credential as text-to-speech. The speech input and speech output fields are two entry points for the same key.
  • Never reads Goose provider credentials or the generic OPENAI_API_KEY environment variable.
  • Waits for the realtime transcription session to be ready before accepting microphone audio.
  • Preserves committed transcript delivery while discarding stale turns across mute boundaries.
  • Stops active voice and playback before changing or clearing the shared credential.

Configuration

Enter an OpenAI key in either Settings → Voice → Speech input or Settings → Voice → Speech output. Saving or clearing it from either location updates the same system credential-manager entry for both voice backends. Berd-scoped environment variables may override voice models and the OpenAI voice base URL, but not the credential.

@johnmatthewtennant johnmatthewtennant changed the title feat(voice): add OpenAI speech backends feat(voice): add OpenAI speech-to-text Aug 26, 2026
@johnmatthewtennant
johnmatthewtennant changed the base branch from main to openai-tts-base August 26, 2026 19:48
@johnmatthewtennant
johnmatthewtennant force-pushed the add-openai-stt-tts branch 3 times, most recently from 06c926a to 7bdb07d Compare August 28, 2026 19:26
@johnmatthewtennant
johnmatthewtennant marked this pull request as ready for review August 29, 2026 16:41

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Automated code review

REQUEST_CHANGES: the OpenAI STT startup path reports readiness after only writing session.update, before the server confirms that the transcription session is configured. Static review covered all 18 changed files and the complete exact three-dot comparison. Supplied GitHub evidence was inspected; all captured checks for the exact head SHA are completed successfully. No local code, tests, builds, package managers, hooks, binaries, or project scripts were run.

Deterministic publication result: 1 blocking and 0 non-blocking finding(s) publishable; 0 duplicate(s) suppressed.

Comment thread src-tauri/src/commands/native_voice.rs Outdated
morgmart
morgmart previously approved these changes Aug 29, 2026

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Automated code review

APPROVE: fresh static inspection of all 19 changed files in the exact three-dot comparison found no publishable findings. The prior server-readiness issue is fixed: startup now waits for session.updated, propagates pre-acknowledgement errors and timeouts, and has discriminating delayed-acknowledgement and rejection coverage. Final self-check covered every changed voice setup and conversation flow; accessibility; English and Spanish localization; navigation, foreground ownership, and consent guards; async failure, never-completes, shutdown, mute-boundary, transcript-ordering, and race behavior; test honesty; design-system and project rules; duplicates and overlap; and the evidence required for blocking severity. Supplied GitHub evidence is structurally valid and was inspected: DCO, frozen install, Semgrep, and zizmor succeeded, while frontend and Tauri Rust checks were still in progress, so required checks still govern merge readiness. No local code, tests, builds, package managers, generated binaries, hooks, or project scripts were run.

Deterministic publication result: 0 blocking and 0 non-blocking finding(s) publishable; 0 duplicate(s) suppressed.

Pending checks: 5 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Automated code review

REQUEST_CHANGES: fresh static inspection of all 19 changed files in the exact three-dot comparison found one blocking credential-state consistency issue. Final self-check covered every changed voice settings and conversation flow; accessibility; English and Spanish localization; navigation, foreground ownership, and consent guards; async failure, never-completes, shutdown, mute-boundary, transcript-ordering, startup, and race behavior; test honesty; design-system and project rules; duplicate/overlapping findings; and concrete evidence plus user effect for blocking severity. The prior server-readiness issue remains fixed and is protected by a resolved thread with a substantive human reply, so it is neither a finding nor a suppression. Supplied GitHub evidence is structurally valid and was inspected; all captured checks for the exact head SHA completed successfully. No local code, tests, builds, package managers, generated binaries, hooks, or project scripts were run.

Deterministic publication result: 1 blocking and 0 non-blocking finding(s) publishable; 0 duplicate(s) suppressed.

Comment thread src-tauri/src/commands/openai_audio.rs
Base automatically changed from openai-tts-base to main August 30, 2026 02:47

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Automated code review

APPROVE: fresh static inspection of all 19 changed files in the exact three-dot comparison found no publishable findings. The prior readiness issue remains fixed by waiting for session.updated and covering delayed acknowledgement and pre-acknowledgement rejection. The prior credential consistency issue remains fixed: canonical save/delete determines success while legacy cleanup is best-effort, with discriminating regression coverage. Final self-check covered every changed voice settings and conversation flow; accessibility; English and Spanish localization; navigation, foreground ownership, and consent guards; async failure, never-completes, startup, shutdown, mute-boundary, transcript-ordering, credential migration, lifecycle, and race behavior; test honesty; design-system and project rules; duplicate/overlapping findings; and concrete evidence plus user effect for blocking severity. Supplied GitHub evidence is structurally valid and was inspected; all captured checks for the exact head SHA completed successfully. No local code, tests, builds, package managers, generated binaries, hooks, or project scripts were run.

Deterministic publication result: 0 blocking and 0 non-blocking finding(s) publishable; 0 duplicate(s) suppressed.

Pending checks: 1 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

@johnmatthewtennant
johnmatthewtennant merged commit 37e706d into main Aug 30, 2026
10 checks passed
@johnmatthewtennant
johnmatthewtennant deleted the add-openai-stt-tts branch August 30, 2026 03:01
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