Skip to content

✨ Feat: 배틀 시나리오 감정 톤 + 철학자 보이스 매핑 인프라 #455

Description

@si-zero

🛠️ Issue Overview

배틀 발행 자동화(붙여넣기 파서)의 선행 인프라. 시나리오 대사에 감정 톤을 구조화해 저장하고 TTS(Fish Audio S2.1 Pro)에 반영하며, 철학자별 보이스(reference_id)를 테이블로 관리한다.

📝 Issue Description

  • 현재 감정 톤 전용 필드가 없고 scenario_scripts.text 인라인에만 존재. Fish Audio 구현체는 감정 파라미터를 전혀 안 보냄.
  • 철학자별 보이스 매핑이 코드/설정에 없어 관리자가 voiceSettings를 매번 수동 입력.
  • 상세 설계: 배틀_발행_시나리오_현행_vs_개선.md 2.4 / 2.5 / 4.

✅ To do

  • philosopher_voice 엔티티 + 리포지토리 (name unique, reference_id, voice_label, note)
  • 어드민 CRUD /api/v1/admin/philosopher-voices (목록/생성/수정/삭제)
  • 초기 시드 SQL docs/db/*.sql (ON CONFLICT (name) DO NOTHING)
  • Tone enum 신설 (NEUTRAL 포함 9값)
  • scenario_scripts.tone 컬럼 (NOT NULL DEFAULT 'NEUTRAL') + 엔티티/DTO/컨버터 반영
  • tone 변경 시 오디오 재생성 트리거 (Script.updateContent / updateScriptsSmartly)
  • TtsService.generateTtsWithSsml 시그니처에 Tone 추가
  • FishAudio 구현체: fishaudio.tts.model 헤더(기본 s2.1-pro) + [tone] 주입 + 효과 태그 정규화
  • ElevenLabs / OpenAI 구현체 tone 매핑
  • 신규 서비스 단위테스트 작성 및 통과

Activity

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

Metadata

Metadata

Assignees

Labels

✨ Feat (기능 추가)새로운 기능을 추가할 때 사용합니다.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions