Skip to content

refactor(voice): LLM→TTS 발화 텍스트 정규화 필터 단일화 #480

Description

@luke-n-alpha

요청

LLM 텍스트가 음성 발화로 넘어갈 때 적용하는 규칙을 언어와 음성 provider에 관계없이 하나의 공통 경계에서 관리한다.

기존 구조 활용

이미 존재하는 packages/shell/src/lib/tts/text-filter.ts 및 sentence-pipeline.ts를 확장한다. 별도 병렬 필터나 컴포넌트별 후처리를 만들지 않는다.

요구사항

  • 공통 기본 규칙과 언어별 규칙을 한 레지스트리 또는 설정 구조에서 관리한다.
  • 이모지, 이모티콘, 장식용 특수문자, URL 및 발화용이 아닌 제어 태그를 TTS 전달 전에 제거한다.
  • 굵게, 굵게, 기울임, 제목, 목록, 인용 등 Markdown 표식은 제거하되 사람이 읽을 본문은 보존한다.
  • fenced code block과 Mermaid 원문은 발화에서 제외한다.
  • inline code는 언어별 발화 규칙으로 처리하고 backtick 자체는 발화하지 않는다.
  • 문장 의미와 운율에 필요한 문자 및 구두점은 보존하며, 필터 결과가 비면 발화를 생성하지 않는다.
  • 브라우저 음성, 로컬 음성, 원격 음성 등 모든 TTS 경로가 동일한 정규화 결과를 사용한다.
  • provider, 컴포넌트, 번역 문자열에 정규식이나 언어별 예외를 하드코딩하지 않는다.

수용 조건

  • 지원 언어의 공통 규칙과 언어별 확장 규칙, 기본 fallback을 자동 테스트로 고정한다.
  • Markdown 강조 표식은 제거되지만 내부 텍스트가 보존됨을 검증한다.
  • 코드 블록, Mermaid, 특수문자와 이모지가 실제 TTS 요청 payload에 포함되지 않음을 검증한다.
  • 일반 텍스트, 숫자, 다국어 문장과 필요한 구두점이 훼손되지 않음을 검증한다.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1-highHigh priorityenhancementNew feature or requestshellNextain Shell (Tauri + React)

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions