현재 작업 상태 저장

This commit is contained in:
Yun Chan 2026-06-27 11:20:24 +09:00
parent 07cc67761e
commit 6bd91b0d5e
674 changed files with 8726 additions and 298 deletions

View file

@ -3,6 +3,8 @@
from __future__ import annotations
import unittest
from pathlib import Path
from tempfile import TemporaryDirectory
from .services.voice import (
DEFAULT_OPENAI_VOICE,
@ -173,6 +175,49 @@ class VoiceServiceStreamTest(unittest.IsolatedAsyncioTestCase):
self.assertEqual(payload["instructions"], "Keep the tone grounded.")
self.assertEqual([chunk.audio for chunk in chunks], [b"\x80\x80", b"\xff\x00"])
async def test_dev_p1_sample_tts_streams_local_mp3_without_openai_key(self) -> None:
with TemporaryDirectory() as tmp:
sample_dir = Path(tmp)
default_audio = b"default-mp3"
anxious_audio = (b"anxious-mp3-" * 500)
(sample_dir / "p1_seoyeon_01_depressed_slow.mp3").write_bytes(default_audio)
(sample_dir / "p1_seoyeon_03_anxious_guarded.mp3").write_bytes(anxious_audio)
service = VoiceService(
api_key="",
poc_sample_tts_enabled=True,
environment="dev",
poc_sample_tts_dir=sample_dir,
)
voice = VoicePreset(preset="soft-young-fem", openai_voice="coral")
chunks = [
chunk
async for chunk in service.synthesize_stream(
"엄마한테 말하지 않는 거죠? 진짜 불안해요.",
voice,
)
]
self.assertFalse(service.is_available())
self.assertTrue(service.poc_sample_tts_available())
self.assertEqual(service.tts_provider(), "p1-sample-poc")
self.assertEqual(b"".join(chunk.audio for chunk in chunks), anxious_audio)
async def test_p1_sample_tts_is_disabled_outside_dev(self) -> None:
with TemporaryDirectory() as tmp:
sample_dir = Path(tmp)
(sample_dir / "p1_seoyeon_01_depressed_slow.mp3").write_bytes(b"default-mp3")
service = VoiceService(
api_key="",
poc_sample_tts_enabled=True,
environment="prod",
poc_sample_tts_dir=sample_dir,
)
self.assertFalse(service.is_available())
self.assertFalse(service.poc_sample_tts_available())
self.assertEqual(service.tts_provider(), "disabled-non-dev")
class EndOfTurnDecisionTest(unittest.TestCase):
def test_end_of_turn_requires_silence_threshold(self) -> None: