mirror of
https://github.com/openai/codex.git
synced 2026-05-02 10:26:45 +00:00
Add realtime voice selection (#17176)
- Add realtime voice selection for realtime/start. - Expose the supported v1/v2 voice lists and cover explicit, configured, default, and invalid voice paths.
This commit is contained in:
@@ -75,6 +75,9 @@ use codex_protocol::protocol::NetworkApprovalProtocol;
|
||||
use codex_protocol::protocol::RateLimitSnapshot;
|
||||
use codex_protocol::protocol::RateLimitWindow;
|
||||
use codex_protocol::protocol::RealtimeAudioFrame;
|
||||
use codex_protocol::protocol::RealtimeConversationListVoicesResponseEvent;
|
||||
use codex_protocol::protocol::RealtimeVoice;
|
||||
use codex_protocol::protocol::RealtimeVoicesList;
|
||||
use codex_protocol::protocol::ResumedHistory;
|
||||
use codex_protocol::protocol::RolloutItem;
|
||||
use codex_protocol::protocol::Submission;
|
||||
@@ -4588,6 +4591,51 @@ async fn run_user_shell_command_does_not_set_reference_context_item() {
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn realtime_conversation_list_voices_emits_builtin_list() {
|
||||
let (session, _turn_context, rx) = make_session_and_context_with_rx().await;
|
||||
|
||||
handlers::realtime_conversation_list_voices(&session, "sub-id".to_string()).await;
|
||||
|
||||
let event = rx.recv().await.expect("event");
|
||||
let voices = match event.msg {
|
||||
EventMsg::RealtimeConversationListVoicesResponse(
|
||||
RealtimeConversationListVoicesResponseEvent { voices },
|
||||
) => voices,
|
||||
msg => panic!("expected list voices response, got {msg:?}"),
|
||||
};
|
||||
assert_eq!(
|
||||
voices,
|
||||
RealtimeVoicesList {
|
||||
v1: vec![
|
||||
RealtimeVoice::Juniper,
|
||||
RealtimeVoice::Maple,
|
||||
RealtimeVoice::Spruce,
|
||||
RealtimeVoice::Ember,
|
||||
RealtimeVoice::Vale,
|
||||
RealtimeVoice::Breeze,
|
||||
RealtimeVoice::Arbor,
|
||||
RealtimeVoice::Sol,
|
||||
RealtimeVoice::Cove,
|
||||
],
|
||||
v2: vec![
|
||||
RealtimeVoice::Alloy,
|
||||
RealtimeVoice::Ash,
|
||||
RealtimeVoice::Ballad,
|
||||
RealtimeVoice::Coral,
|
||||
RealtimeVoice::Echo,
|
||||
RealtimeVoice::Sage,
|
||||
RealtimeVoice::Shimmer,
|
||||
RealtimeVoice::Verse,
|
||||
RealtimeVoice::Marin,
|
||||
RealtimeVoice::Cedar,
|
||||
],
|
||||
default_v1: RealtimeVoice::Cove,
|
||||
default_v2: RealtimeVoice::Marin,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
struct NeverEndingTask {
|
||||
kind: TaskKind,
|
||||
|
||||
Reference in New Issue
Block a user