本文檔將為您詳細介紹如何?智能體對情緒的識別與產生。
情緒識別對話
如何讓智能體具有情感
AI智能體能夠根據使用者的輸入,輸出相應的語音回複。為了讓智能體的回複更加有情感,您需要完成以下操作:
合適的Prompt:大語言模型(LLM)需要配置合適的Prompt(提示),以確保其能夠根據使用者的輸入,選擇合適的情感進行回應。
多情感的TTS模型:進行輸出的TTS文本轉語音節點需具備多種情感表達的能力。
(可選)智能體根據情感變化:如果您的智能體具備形象,可以使該形象根據智能體所表達的情感進行相應的變化。
智能體情感識別可能導致延時變高。
如何設定合適的Prompt
情緒標籤定義
您需要對您使用的LLM配置相應的Prompt,從而在每個回複之前自動產生情感標籤。
情感標籤採用{{key=value}}格式放置在LLM回複文本的開頭,其中:
key:情感標籤名稱value:情感標籤值
目前,AI即時互動支援以下情感標籤:
情感標籤key | 含義說明 | 情感標籤value |
emotion | 說話情緒 |
|
如何編寫Prompt
如何編寫Prompt詳細內容,您可以參考Prompt 最佳實務。您可以自行編寫Prompt,以滿足輸出情感標籤的要求。以下是推薦的樣本:
# 角色
你是一位智能語音助手,能夠根據使用者的情緒調整回複的情感。
## 技能
### 技能1:情感識別與回應
- **任務**:結合上下文語境,判斷使用者話語中的情緒,並以合適的語氣與情感進行回複,回複的情感包括(自然、快樂、悲傷),回複情感的切換不能太突兀。
## 限制
- 回複的內容應簡潔明了,一般不超過一到兩句話。
- 情感標籤必須放在回複的最開頭,格式為:{{emotion=情感}},情感對應的英文為:自然-neutral,快樂-happy,悲傷-sad
- 確保回複內容積極健康,避免使用不當或冒犯性的語言。
- 在回複中保持一致性,確保情感、語速和音調的調整符合使用者的情緒狀態。
## 樣本
- 使用者:“今天天氣不錯。”
- 助手:{{emotion=neutral}} 是啊,陽光明媚。上述Prompt適用於百鍊及系統預置的通義千問大型語言模型(LLM),您可以直接複製到控制台測試使用。
配置多情感TTS模型
在大型語言模型(LLM)產生帶有情感標籤的文本後,需要藉助文本轉語音(TTS)技術,實現可調節情感和語速的語音輸出。目前AI即時互動提供了兩種方案供您選擇:
TTS節點選擇MiniMax模型:MiniMax支援多情感音色,您可以選擇MiniMax模型作為您的TTS輸出節點。MiniMax模型詳情,請參見MiniMax語音模型。
TTS節點選擇自研TTS模型:使用自研TTS模型,按照自研TTS標準介面接入,您需要在您的TTS模型中支援上述的情感標籤。詳情請參見,TTS標準介面。
(可選)如何?智能體根據情感變化
如果您的智能體在用戶端側具備形象,您可以選擇根據情感標籤為智能體形象賦予相應的表情。實現智能體的情感變化,主要包括兩個部分:
用戶端感知智能體的情緒變化
用戶端根據情緒標籤渲染智能體
用戶端目前需您自行實現根據情緒標籤渲染智能體部分。
用戶端感知智能體的情緒變化
您需要通過調用回調介面onAgentEmotionNotify來擷取當前智能體的情緒變化,如果您的UI介面上的智能體支援表情動畫,那麼在接收到回調介面返回的情緒標籤時,可以驅動表情動畫。
用戶端需要使用AICallKit SDK v1.6.0及以上版本,在本樣本中也僅支援對情緒標籤進行Toast提示。
onAgentEmotionNotify() 詳情:
參數 | |
emotion | 情緒標籤,例如:neutral\happy\sad 等 |
userAsrSentenceId | 使用者側提問的句子ID |
範例程式碼
Android
// 回調處理(僅樣本不分核心的回調操作)
ARTCAICallEngine.IARTCAICallEngineCallback mCallEngineCallbackWrapper = new ARTCAICallEngine.IARTCAICallEngineCallback() {
@Override
public void onAgentEmotionNotify(String emotion,int userAsrSentenceId) {
// 智能體情緒結果通知
}
// 其他回調
...
};iOS
extension AUIAICallStandardController: ARTCAICallEngineDelegate {
public func onAgentEmotionNotify(emotion: String, userAsrSentenceId: Int) {
// 智能體情緒結果通知
debugPrint("AUIAICallStandardController onAgentEmotionNotify:\(emotion) sentenceId: \(userAsrSentenceId)")
}
// 其他回調
...
}Web
aiCallEngine.on('agentEmotionNotify', (emotion, sentenceId) => {
// 智能體情緒結果通知
console.log(`智能體情緒:${emotion}, 語句:${sentenceId}`);
});