Some checks are pending
CI / ruff (push) Waiting to run
CI / mypy (push) Waiting to run
CI / pytest (push) Waiting to run
CI / package (push) Waiting to run
CI / Install smoke (${{ matrix.label }}) (linux, ubuntu-latest) (push) Blocked by required conditions
CI / Install smoke (${{ matrix.label }}) (macos-arm64, macos-14) (push) Blocked by required conditions
61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
from queue import Queue
|
|
from threading import Event as ThreadingEvent
|
|
|
|
import pytest
|
|
from openai.types.realtime import RealtimeSessionCreateRequest
|
|
from openai.types.realtime.realtime_audio_config import RealtimeAudioConfig
|
|
from openai.types.realtime.realtime_audio_config_input import RealtimeAudioConfigInput
|
|
from openai.types.realtime.realtime_audio_config_output import RealtimeAudioConfigOutput
|
|
from openai.types.realtime.realtime_audio_formats import AudioPCM
|
|
|
|
from speech_to_speech.api.openai_realtime.runtime_config import RuntimeConfig
|
|
from speech_to_speech.api.openai_realtime.service import RealtimeService
|
|
|
|
|
|
def _session_16k() -> RealtimeSessionCreateRequest:
|
|
"""Build a test session with 16 kHz audio rates (matches PIPELINE_SAMPLE_RATE)."""
|
|
fmt = AudioPCM.model_construct(rate=16000, type="audio/pcm")
|
|
return RealtimeSessionCreateRequest.model_construct(
|
|
type="realtime",
|
|
audio=RealtimeAudioConfig.model_construct(
|
|
input=RealtimeAudioConfigInput.model_construct(format=fmt),
|
|
output=RealtimeAudioConfigOutput.model_construct(format=fmt),
|
|
),
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def runtime_config():
|
|
cfg = RuntimeConfig()
|
|
cfg.session = _session_16k()
|
|
return cfg
|
|
|
|
|
|
@pytest.fixture
|
|
def text_prompt_queue():
|
|
return Queue()
|
|
|
|
|
|
@pytest.fixture
|
|
def should_listen():
|
|
ev = ThreadingEvent()
|
|
ev.set()
|
|
return ev
|
|
|
|
|
|
@pytest.fixture
|
|
def service(runtime_config, text_prompt_queue, should_listen):
|
|
svc = RealtimeService(
|
|
text_prompt_queue=text_prompt_queue,
|
|
should_listen=should_listen,
|
|
)
|
|
return svc
|
|
|
|
|
|
@pytest.fixture
|
|
def conn_id(service, runtime_config):
|
|
cid = service.register()
|
|
service._state(cid).runtime_config = runtime_config
|
|
yield cid
|
|
service.unregister(cid)
|