/** * TTS 配音风格预设(情感/语气风格) * - key:传给后端的 style 标识,便于后端按策略合成 * - 未传 style 时后端默认自然亲切 * * 注:与原 emotion(CosyVoice 7 种基础情绪枚举)解耦; * style 是更高层的"说话风格预设",后端可能映射到 emotion + speed + prompt 组合。 */ export interface TtsStyleOption { /** 传给后端的风格标识 */ value: string /** 展示名 */ label: string /** emoji 图标 */ emoji: string /** 给用户/后端的风格描述(prompt 风格) */ description: string } export const TTS_STYLE_OPTIONS: readonly TtsStyleOption[] = [ { value: "natural", label: "自然亲切", emoji: "😊", description: "亲切自然,像朋友聊天", }, { value: "excited", label: "激动兴奋", emoji: "🤩", description: "激动兴奋,语速稍快,充满活力", }, { value: "professional", label: "沉稳专业", emoji: "🧑‍💼", description: "沉稳专业,语速适中,正式可靠", }, { value: "sweet", label: "温柔甜美", emoji: "🌸", description: "温柔甜美,语速轻柔", }, { value: "news", label: "新闻播报", emoji: "📰", description: "字正腔圆,严肃正式", }, { value: "livestream", label: "直播带货", emoji: "🎤", description: "热情有感染力,有节奏感", }, ] as const export type TtsStyle = (typeof TTS_STYLE_OPTIONS)[number]["value"] /** 默认风格:自然亲切 */ export const DEFAULT_TTS_STYLE: TtsStyle = "natural" /** 根据 value 查找风格选项(容错:找不到回退 natural) */ export function getTtsStyle(value: string | null | undefined): TtsStyleOption { return ( (TTS_STYLE_OPTIONS as readonly TtsStyleOption[]).find((o) => o.value === value) ?? (TTS_STYLE_OPTIONS as readonly TtsStyleOption[])[0] ) }