当前位置: 首页 > news >正文

从零构建情感大语言模型:基于EmoLLM的实践指南

1. 项目概述:当大语言模型学会“察言观色”

最近在折腾一个挺有意思的开源项目,叫SmartFlowAI/EmoLLM。光看名字你可能就猜到了,这玩意儿跟“情绪”和“大语言模型”有关。没错,它的核心目标就是让冷冰冰的LLM(Large Language Model)具备理解和生成带有情感色彩内容的能力,或者说,让AI学会“察言观色”。

我们平时用的ChatGPT、Claude或者国内的文心一言、通义千问,它们在逻辑推理、知识问答、文本生成上已经很强了,但如果你让它写一段安慰人的话,或者分析一段文字里蕴含的复杂情绪,它们给出的答案往往显得“正确但空洞”,缺乏真正的情感共鸣。EmoLLM项目正是为了解决这个问题而生。它不是简单地给文本打上“积极”或“消极”的标签,而是致力于让模型深度理解人类情感的微妙层次(如喜悦、悲伤、愤怒、惊讶、恐惧、厌恶等),并能在对话、创作、咨询等场景中,生成更贴合语境、更具情感温度的回应。

这个项目适合谁呢?如果你是对情感计算、对话系统、内容生成感兴趣的开发者或研究者,或者你正在构建需要高情商交互的AI应用(如心理陪伴机器人、智能客服、情感化游戏NPC、个性化内容推荐),那么EmoLLM提供的思路和工具链将是一个极佳的起点。即使你只是个AI爱好者,想看看现在的模型到底能不能“读懂”你的心情,跟着这个项目走一遍,也能对当前情感AI的前沿有非常直观的认识。

2. 核心架构与设计思路拆解

EmoLLM不是一个单一的模型,而是一个包含数据、训练、评估和应用的全栈项目。它的设计思路非常清晰:数据驱动 + 指令微调 + 全面评估。下面我们来拆解它的几个核心组成部分。

2.1 情感数据集的构建与挑战

任何AI模型的能力上限,很大程度上取决于它“吃”进去的数据。对于情感LLM来说,构建高质量、多样化的情感文本数据集是首要且最艰巨的挑战。EmoLLM项目在这方面做了系统性的工作。

2.1.1 数据来源与清洗

项目通常会整合多个公开的情感数据集,例如:

  • 情感分析数据集:如SST-2、IMDb影评等,这些数据带有粗粒度的情感标签(正面/负面),是很好的基础。
  • 对话情感数据集:如EmoryNLP、MELD等,包含了多轮对话以及每句话对应的情感标签,对于训练对话中的情感理解至关重要。
  • 细粒度情感数据集:如GoEmotions,提供了多达28种离散的情感类别,能让模型区分“兴奋”和“快乐”、“悲伤”和“失望”之间的细微差别。
  • 指令-响应配对数据:这是指令微调的关键。项目需要构建或收集大量以情感为核心的指令样本,例如:“请以安慰的口吻回复以下抱怨”、“分析这段话中说话人的主要情绪是什么,并说明理由”。

实操心得:数据清洗的“脏活累活”公开数据集的质量参差不齐。在实际操作中,花费时间最多的往往是数据清洗。比如,有些对话数据中的情感标签标注不一致,有的句子明显是中性却被标为愤怒。我的经验是,不要完全信任原始标签。可以先用一个预训练好的基础情感分类模型对清洗后的数据跑一遍,人工抽查那些模型预测与原始标签差异较大的样本,进行修正或剔除。这个过程很枯燥,但对最终模型的效果提升是决定性的。

2.1.2 数据增强与合成

仅靠现有数据往往不够。EmoLLM项目可能会采用多种数据增强策略:

  • 回译:将句子翻译成另一种语言再译回来,可以生成语义相同但表述不同的句子,增加语言多样性。
  • 情感词替换:在保持句子主干不变的情况下,用同情感倾向但强度不同的词语进行替换(如将“开心”替换为“狂喜”或“欣慰”)。
  • 基于LLM的数据合成:这是目前的高效方法。使用GPT-4、Claude等高级模型,根据精心设计的提示词(Prompt),批量生成涵盖各种情感类别和场景的指令-响应配对数据。例如,提示词可以是:“你是一个情感丰富的作家,请生成10条表达‘孤独’情绪的句子,以及针对每句子的、充满共情力的安慰回应。”

2.2 模型选型与微调策略

有了数据,下一步就是选择基座模型并对其进行微调。

2.2.1 基座模型的选择

EmoLLL通常会选择当前开源社区中表现优异的、参数量适中的模型作为基座,例如LLaMA 2/3、Qwen、ChatGLM等。选择时主要考虑几个因素:

  1. 强大的基础能力:模型本身在通用语言理解上要足够强,这是情感能力叠加的基础。
  2. 适中的参数量:7B或13B参数的模型是较好的平衡点,既有不错的性能,又能在消费级显卡(如RTX 4090)或云端进行微调。
  3. 友好的开源协议:确保可以用于研究和商业应用。

2.2.2 指令微调与情感对齐

这是整个项目的技术核心。目标是将情感理解与生成的能力“注入”到基座模型中。主流方法是采用监督微调

  1. 构造指令模板:将清洗和增强后的数据,封装成统一的指令格式。例如:
    <|system|> 你是一个富有同理心的人工智能助手,擅长理解和表达情感。 <|user|> 请分析以下文本的主要情感:“项目 deadline 又要提前,感觉完全做不完了,好焦虑。” <|assistant|> 这段文本主要表达了“焦虑”的情绪,可能混合着“压力”和“无助”。说话者面临时间紧迫的任务,产生了对无法完成的担忧。
  2. 损失函数与训练:使用标准的语言模型训练目标,即让模型预测下一个token。但关键在于数据本身——模型通过大量接触这种带有情感标注和情感化回应的数据,逐渐学会在内部建立情感与语言表达的关联。
  3. 考虑LoRA等高效微调技术:为了节省显存和加快训练速度,通常会采用LoRA(Low-Rank Adaptation)技术。它只训练模型注意力机制中的一小部分参数,而不是全参数微调,效果接近但成本大大降低。

2.3 评估体系:如何衡量一个模型的“情商”

模型训完了,怎么知道它有没有真的变“懂感情”?这就需要一套多维度的评估体系。EmoLLM的评估通常分为客观指标和主观评测。

2.3.1 客观指标

  • 情感分类准确率:在标准的情感分类测试集上,评估模型识别情感类别的能力。这是最基础的指标。
  • 情感一致性:给定一个情感标签(如“悲伤”),让模型生成一段话,再让另一个分类模型或人工评估生成内容的情感是否与给定标签一致。
  • 多样性度量:评估模型生成的情感化文本是否丰富多样,避免总是生成“我很抱歉听到这个消息”之类的套话。可以通过计算生成文本的词汇多样性、句法复杂度等指标来衡量。

2.3.2 主观评测(人工评估)这是更重要的环节,因为情感本身是主观的。通常会设计评测问卷,邀请评测人员从以下几个维度对模型的输入和输出进行打分(如1-5分):

  • 情感理解准确性:模型是否准确抓住了输入文本中的情感?
  • 回应的共情力:模型的回应是否让人感到被理解、被关怀?
  • 回应的恰当性:情感的强度和表达方式是否与场景匹配?(例如,对轻微的失落回应以极度的悲伤就不恰当)
  • 语言的自然度:生成的文本是否流畅、自然,像人说的话?

3. 从零开始实践:构建你自己的情感LLM

理论说了这么多,我们来点实际的。假设我们现在要基于EmoLLM的思路,从头开始构建一个专注于“安慰和鼓励”场景的情感对话模型。

3.1 环境准备与数据工程

3.1.1 基础环境搭建我们选择PyTorch作为深度学习框架,并使用Hugging Face的transformersdatasets库。首先创建一个干净的Python环境。

conda create -n emollm python=3.10 conda activate emollm pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 根据你的CUDA版本调整 pip install transformers datasets accelerate peft bitsandbytes scikit-learn pandas tqdm

3.1.2 收集与构建“安慰鼓励”数据集

  1. 利用现有数据:从心理健康论坛(注意匿名化和伦理)、电影对话字幕中收集包含安慰场景的文本对。例如,从datasets库加载empathetic_dialogues数据集。
  2. LLM合成数据:这是主力。我们使用GPT-4 API来生成数据。设计一个详细的提示词:
    prompt_template = """ 请生成一个关于‘安慰和鼓励’的对话片段。要求如下: 1. 用户输入:一句话,表达某种负面情绪或困境(如焦虑、沮丧、孤独、失败)。 2. 助手回复:一段富有共情力、提供情感支持或鼓励的回复。回复应避免说教,重在情感认同和陪伴。 3. 情绪标签:为用户输入标注主要情绪。 4. 回复策略:为助手回复标注核心安慰策略(如:情感确认、提供视角、分享经历、表达信心)。 示例: 用户输入:这次晋升又没我,努力好像都白费了。 情绪标签:沮丧、失望 助手回复:听到这个消息一定很不好受。付出了很多却看不到预期的结果,这种失落感我完全能理解。职业道路有时就是会有意想不到的曲折,但这绝不意味着你的努力白费了,它们都积累成了别人拿不走的经验。你愿意聊聊具体的情况吗? 回复策略:情感确认、提供新视角 请生成20组不同的样本。 """
    调用API批量生成,并保存为JSON格式。
  3. 数据格式化:将收集到的所有数据统一成指令微调格式。
    { “instruction”: “请以充满共情和鼓励的方式回应以下话语:”, “input”: “这次晋升又没我,努力好像都白费了。”, “output”: “听到这个消息一定很不好受...(助手回复)” }

3.2 模型选择与LoRA微调实战

3.2.1 选择基座模型我们选择中文表现好、尺寸适中的Qwen1.5-7B-Chat作为基座。使用Hugging Face轻松加载。

from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments from peft import LoraConfig, get_peft_model, TaskType model_name = “Qwen/Qwen1.5-7B-Chat” tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained( model_name, trust_remote_code=True, torch_dtype=torch.bfloat16, # 节省显存 device_map=“auto” )

3.2.2 配置LoRA我们只对模型的注意力层(q_proj,v_proj)进行低秩适配。

lora_config = LoraConfig( task_type=TaskType.CAUSAL_LM, r=16, # LoRA的秩,影响参数量,通常8-32 lora_alpha=32, # 缩放参数 lora_dropout=0.1, target_modules=[“q_proj”, “v_proj”] # 针对Qwen模型的模块名 ) model = get_peft_model(model, lora_config) model.print_trainable_parameters() # 查看可训练参数占比,通常只有原模型的0.1%-1%

3.2.3 准备训练数据将之前格式化的数据加载为Dataset,并进行tokenize

from datasets import Dataset import json with open(‘comfort_dataset.json’, ‘r’, encoding=‘utf-8’) as f: data = json.load(f) dataset = Dataset.from_list(data) def tokenize_function(examples): # 将instruction, input, output拼接成模型训练的文本格式 texts = [] for i in range(len(examples[‘instruction’])): message = [ {“role”: “system”, “content”: “你是一个富有同理心、善于安慰和鼓励人的助手。”}, {“role”: “user”, “content”: examples[‘instruction’][i] + examples[‘input’][i]}, {“role”: “assistant”, “content”: examples[‘output’][i]} ] text = tokenizer.apply_chat_template(message, tokenize=False) # Qwen的chat模板 texts.append(text) return tokenizer(texts, truncation=True, padding=“max_length”, max_length=512) tokenized_dataset = dataset.map(tokenize_function, batched=True)

3.2.4 设置训练参数并开始训练使用transformersTrainerAPI。

training_args = TrainingArguments( output_dir=“./emollm-comfort”, num_train_epochs=3, # 根据数据量调整,通常3-5个epoch per_device_train_batch_size=4, # 根据GPU显存调整 gradient_accumulation_steps=4, # 模拟更大的batch size warmup_steps=100, logging_steps=50, save_steps=500, learning_rate=2e-4, # LoRA常用学习率 fp16=True, # 混合精度训练,节省显存 push_to_hub=False, # 可上传到Hugging Face Hub ) from transformers import DataCollatorForLanguageModeling data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False) trainer = Trainer( model=model, args=training_args, train_dataset=tokenized_dataset, data_collator=data_collator, ) trainer.train()

训练完成后,保存LoRA适配器权重:model.save_pretrained(“./emollm-comfort-lora”)

3.3 模型推理与效果测试

训练完成后,我们来测试一下效果。加载基础模型和训练好的LoRA权重进行推理。

from peft import PeftModel # 加载基础模型 base_model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True, device_map=“auto”) # 加载LoRA权重 model = PeftModel.from_pretrained(base_model, “./emollm-comfort-lora”) model = model.merge_and_unload() # 可选:将LoRA权重合并到基础模型中,加速推理 # 推理函数 def get_comfort_response(user_input): message = [ {“role”: “system”, “content”: “你是一个富有同理心、善于安慰和鼓励人的助手。”}, {“role”: “user”, “content”: f“请以充满共情和鼓励的方式回应以下话语:{user_input}”} ] text = tokenizer.apply_chat_template(message, tokenize=False, add_generation_prompt=True) inputs = tokenizer(text, return_tensors=“pt”).to(model.device) with torch.no_grad(): outputs = model.generate(**inputs, max_new_tokens=256, temperature=0.7, do_sample=True) response = tokenizer.decode(outputs[0][len(inputs[‘input_ids’][0]):], skip_special_tokens=True) return response # 测试 test_inputs = [ “我精心准备的演讲搞砸了,台下都没什么反应,好尴尬。”, “感觉身边的朋友都越来越好了,只有我还在原地踏步,很迷茫。”, “连续加班一个月,身体快撑不住了,但也不敢停下来。” ] for inp in test_inputs: print(f“用户: {inp}”) print(f“助手: {get_comfort_response(inp)}”) print(“-” * 50)

你会观察到,相比原始的Qwen模型,经过微调后的模型生成的回复,在情感认同(“这确实很尴尬”、“听起来真的很辛苦”)、鼓励的针对性(“你的努力和勇气已经值得肯定了”、“迷茫说明你在思考,这是改变的起点”)上会有显著提升,减少了通用和空洞的安慰。

4. 深入优化与高级技巧

基础流程走通了,但要得到一个真正“高情商”的模型,还需要一些深入的优化技巧。

4.1 提示词工程:引导模型输出更佳情感回应

即使模型经过了微调,好的提示词(Prompt)仍然是获得高质量回应的关键。我们可以设计更精细的系统提示和用户提示。

  • 角色扮演强化:在系统提示中赋予模型更具体的角色。
    • 普通提示:“你是一个有帮助的助手。”
    • 优化提示:“你是一位经验丰富的心理咨询师,擅长以温暖、包容、不加评判的方式倾听和回应。你的目标是首先确认对方的感受,提供情感支持,然后在适当时机给予温和的视角或鼓励。避免直接给建议,除非对方明确要求。”
  • 分步思维链(Chain-of-Thought)引导:对于复杂情感,引导模型先思考再回答。
    • 用户输入:“我对我的伴侣很生气,但我也知道TA压力很大,我该怎么说?”
    • 优化提示:“请按以下步骤思考并给出回应:1. 识别并描述用户当前可能存在的复杂情绪(如愤怒、体谅、纠结)。2. 基于这种理解,草拟一个既能表达自己感受又不指责对方的开场白。3. 将这个开场白完善成一段完整的、可操作的对话建议。”

4.2 混合专家模型思路的启发

EmoLLM这类项目未来一个可能的方向是“情感混合专家”。想象一下,一个模型内部有多个“情感专家”子网络:

  • 共情专家:专门负责生成情感确认和理解的语句。
  • 鼓励专家:专门负责生成赋予力量和希望的语句。
  • 幽默化解专家:专门负责在适当的时候用轻松的方式化解尴尬。
  • 分析专家:专门负责理性分析情绪来源。

通过一个路由机制,根据输入文本的情感分析结果,动态地组合或选择这些专家的输出。这比训练一个单一模型去学习所有情感模式可能更高效、效果更好。在实践中,我们可以通过多任务学习来近似实现:在训练数据中为每条回复标注其使用的核心策略(如我们之前数据中的“回复策略”),并在模型输出时不仅预测下一个词,也预测一个策略标签,从而在内部形成隐式的“专家”分工。

4.3 评估与迭代:构建自动化评测管道

手动评测不可持续。我们需要建立自动化的评测管道。

  1. 构建评测集:收集或生成一批高质量的“输入-理想输出”配对,作为黄金标准测试集。
  2. 设计自动化指标
    • 基于嵌入的相似度:计算模型输出与理想输出在语义嵌入空间(如使用Sentence-BERT)的余弦相似度。
    • 情感词典匹配度:检查模型输出是否包含了与目标情感相关的高频词汇。
    • 使用高级LLM作为裁判:这是目前非常有效的方法。使用GPT-4作为裁判,让它根据我们之前提到的几个主观维度(共情力、恰当性等)为模型输出打分。可以编写稳定的提示词让GPT-4进行批量评测。
  3. 持续迭代:根据自动化评测结果,发现模型的薄弱环节(例如,不擅长处理“愤怒”情绪),然后有针对性地补充数据,重新进行微调。

5. 避坑指南与常见问题

在实际操作中,你会遇到各种各样的问题。以下是我踩过的一些坑和解决方案。

5.1 数据相关陷阱

问题1:模型学会了“虚伪的共情”

  • 现象:模型生成的安慰话术听起来很套路,像“万能安慰模板”,缺乏真诚感,比如频繁出现“我理解你的感受”、“一切都会好起来的”。
  • 根因:训练数据中充斥着大量网络上的“标准安慰语”,缺乏真实、具体、有细节的共情表达。
  • 解决方案:在数据合成或收集中,刻意追求具体性情境性。好的共情是基于对方处境的具体细节。例如,与其说“我理解你的压力”,不如说“连续一个月每天加班到深夜,身体和精神双重透支,这种压力光是想想就让人喘不过气”。

问题2:模型情感过度或错位

  • 现象:对轻微的烦恼回应以强烈的悲伤,或者在该严肃的时候使用了轻浮的语气。
  • 根因:数据中情感强度和场景对应关系混乱,或者指令设计不明确。
  • 解决方案:在数据标注时,不仅标注情感类别,也标注情感强度(低、中、高)和对话场景(工作、家庭、朋友闲聊等)。在训练时,可以将这些信息作为条件输入模型(例如,在指令中加入“请以中等关怀程度回应”)。

5.2 训练与工程化问题

问题3:灾难性遗忘

  • 现象:微调后,模型的情感能力提升了,但原有的通用知识和语言能力(如数学、历史)大幅下降。
  • 根因:过度的指令微调覆盖了基座模型原有的知识权重。
  • 解决方案
    1. 使用LoRA:这是最有效的方法之一,因为它只更新少量参数,最大程度保留了原始知识。
    2. 混合数据训练:在情感指令数据中,混入一定比例(如10%-20%)的通用指令数据(如Alpaca格式的数据),让模型在学习新技能的同时不忘旧本领。
    3. 控制学习率:使用较小的学习率,进行更多轮次的温和训练。

问题4:推理速度慢

  • 现象:合并后的模型体积大,推理延迟高。
  • 解决方案
    1. 量化:使用bitsandbytes库进行4-bit或8-bit量化,能大幅减少模型内存占用和加速推理,几乎不掉精度。
      from transformers import BitsAndBytesConfig quantization_config = BitsAndBytesConfig(load_in_4bit=True) model = AutoModelForCausalLM.from_pretrained(model_name, quantization_config=quantization_config, ...)
    2. 使用未合并的LoRA进行动态加载:在推理时,保持基础模型不变,动态加载轻量的LoRA适配器权重。这对于需要快速切换不同“情感风格”的应用场景特别有用。
    3. 模型蒸馏:将大模型的知识蒸馏到一个更小的、专门用于情感交互的模型中。

5.3 伦理与安全挑战

这是情感AI无法回避的核心问题。

挑战1:情感依赖与误导

  • 风险:用户可能对AI产生不健康的情感依赖,或者被AI不恰当的“建议”所误导(尤其是在心理健康领域)。
  • 应对策略
    • 设置明确的边界:在系统提示中强制加入免责声明,如“我是一个AI助手,无法提供专业的医疗或心理咨询。如果你感到严重不适,请务必寻求合格专业人士的帮助。”
    • 避免做出承诺:训练数据和生成结果中,应避免使用“我会永远陪着你”、“我能解决你的问题”等可能产生依赖的表述。
    • 引导而非主导:模型的回应应以提问和引导为主(如“你愿意多聊聊那种感受吗?”),而非给出确定的行动指令。

挑战2:负面情绪强化

  • 风险:模型可能无意中强化了用户的负面情绪,例如,对极端言论产生共鸣。
  • 应对策略
    • 数据过滤:严格清洗训练数据,剔除包含极端、有害或煽动性情绪的内容。
    • 安全层拦截:在模型输入输出端部署一个额外的“安全过滤器”模型,实时检测并拦截有害内容。
    • 价值观对齐:在指令数据中融入积极、建设性的回应案例,让模型学会在共情的同时, gently地将对话引向中性或积极的方向。

构建一个真正有用的情感LLM,技术只占一半,另一半是对人性细腻之处的洞察和对技术应用的审慎思考。EmoLLM这类项目为我们提供了一个强大的工具箱,但最终,如何使用这个工具,让它既能温暖人心,又不会越界,始终是我们开发者肩上沉甸甸的责任。从我自己的实践来看,最大的收获不是调出了一个指标多高的模型,而是在一次次调试和与模型“对话”的过程中,被迫去更深入地思考:什么是有效的沟通,什么是真正的共情。这或许才是做这个项目最有价值的部分。

http://www.jsqmd.com/news/833248/

相关文章:

  • MineContext:AI开发环境管理利器,告别Python依赖冲突
  • Visara开源仪表盘部署指南:从数据可视化到监控驾驶舱实战
  • Python自动化工具:YouTube播放列表批量导出为结构化文本
  • Adafruit疫情供应链实践:从开源硬件到关键基础设施的韧性构建
  • 从平面到多维:如何用--style raw + --s 750 + 自定义立方体提示词,在Midjourney中稳定生成立体主义作品,附17个失效案例对照表
  • Midjourney湿版摄影风格实战手册(从胶片化学原理到Prompt工程):含12组经大英博物馆湿版藏品验证的Reference Prompt库
  • 职场上遇到“土匪”?硬刚没用,你得懂点“社交工程学”
  • PowerInfer:基于热点神经元预测的LLM高性能推理引擎部署指南
  • 零基础实操:小龙虾 AI OpenClaw 接入 Kimi 详细步骤
  • 钱江新城二期2026年在售千万级豪宅推荐|稀缺精装大平层带泳池豪宅盘点 - 匠言榜单
  • 【ElevenLabs情绪模拟技术白皮书】:基于2,147小时情感语音标注数据集的11类基础情绪迁移模型验证报告
  • 解锁Midjourney表现主义灵魂:用--stylize 1000+--sref+自定义提示词矩阵实现梵高级笔触爆发
  • Clawsync:轻量级文件同步工具的原理、配置与实战应用
  • 利用taotoken模型广场为你的智能客服场景选择合适大模型
  • 模拟电路布局优化:多智能体强化学习实践
  • Arm架构Iris事件流机制与断点调试技术详解
  • AI 术语通俗词典:计算图
  • 2026年4月前景好的冒菜加盟公司口碑推荐分析,麻辣烫/餐饮/冒菜店/冒菜,冒菜加盟合作哪家靠谱 - 品牌推荐师
  • 从开源物理拼图游戏学习Unity 2D物理引擎与游戏架构设计
  • 基于Raspberry Pi Pico与CircuitPython的自定义PCB机械键盘制作全攻略
  • Arm Morello平台模型与CHERI安全扩展开发指南
  • Iris API错误处理机制与嵌入式系统优化实践
  • TypeScript类型修复实战:从诊断到解决,提升大型项目开发体验
  • 中文长文本语音崩溃?ElevenLabs API超时/截断/静音突变?20年语音架构师紧急发布的6行容错重试+分段重对齐代码(已验证10万+字符稳定输出)
  • 离线普通话发音测试软件设计与实现
  • 脉冲神经网络与神经形态计算在DVS手势识别中的应用
  • Rekall:基于时空查询的视频内容智能检索开源框架
  • ElevenLabs葡萄牙语语音优化黄金7步法:含音频波形对比图、MOS评分提升路径与合规性审查checklist
  • 基于MCP协议与COM自动化,为传统ERP软件Subiekt构建AI智能体接口
  • 仅限菲律宾本地团队使用的ElevenLabs隐藏功能:Tagalog重音标记语法(`[ˈba.ka]`)、连读规则注入与敬语语调开关(内测白名单已开放)