使用方式
AI 助手模組提供智慧對話能力,支援即時問答、聊天歷史和音訊處理功能。
主要方法
| 方法 | 功能 |
|---|---|
setupAIAssistant |
初始化 AI 助手 |
sendAIQuestionMsg |
傳送問題給 AI 助手 |
getAIAssistantChatHistory |
取得聊天歷史 |
createAiAssistantAudioTask |
建立音訊合成任務 |
getAiAssistantAudioTaskResult |
取得音訊任務結果 |
recognizeAudioBlobToText |
音訊轉文字 |
使用範例
// 初始化 AI 助手(独立模式)
await aiCore.aiAssistant.setupAIAssistant(
{
aiAssistantCode: 'your-code',
aiAssistantToken: 'your-token',
},
{ independent: true },
);
// 发送问题
await aiCore.aiAssistant.sendAIQuestionMsg({
content: '请介绍一下视频内容',
});
// 获取聊天历史
const history = await aiCore.aiAssistant.getAIAssistantChatHistory();
// 音频合成(TTS)
const { taskId } = await aiCore.aiAssistant.createAiAssistantAudioTask({
text: '你好,我是 AI 助手',
rate: 1.0,
});
// 音频识别
const text = await aiCore.aiAssistant.recognizeAudioBlobToText({
audioBlob: audioFile,
audioType: 'wav',
});
是否支援 AI 助手聊天功能
Api 方法: supportAIAssistantChat(): SupportResult
回傳值說明: SupportResult 類型
取得 AI 助手相關設定
Api 方法: getAIAssistantConfig(): PolyvAIAssistantConfig
回傳值說明: AI 助手設定,PolyvAIAssistantConfig 類型,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
aiDigitalHumanEnabled |
AI 數字人開關 | boolean |
aiAssistantEnabled |
AI 助手開關,預設關閉 | boolean |
aiAssistantExpired |
AI 助手是否過期,預設為 false | boolean |
取得 AI 助手資訊
說明: 取得目前 AI 助手的設定資訊,包括助手 ID、名稱、數字人資訊等
Api 方法: getAIAssistantInfo(): PolyvAIAssistantInfo
回傳值說明: AI 助手資訊物件,PolyvAIAssistantInfo 類型,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
digitalHumanId |
AI 數字人 Id,預設 -1 | number |
digitalHumanName |
AI 數字人名稱 | string |
videoSource |
影片資源 | Object |
aiAssistantId |
AI 助手 Id,預設 -1 | number |
aiAssistantName |
AI 助手名稱,預設為 'AI' | string |
aiAssistantCode |
AI 助手編碼 | string |
aiAssistantToken |
AI 助手 Token | string |
welcomeSpeech |
AI 助手歡迎語 | string |
範例:
const assistantModule = new AIAssistantModule();
await assistantModule.setupAIAssistant({ aiAssistantCode: 'xxx' });
const info = assistantModule.getAIAssistantInfo();
console.log('助手ID:', info.aiAssistantId);
console.log('助手名称:', info.aiAssistantName);
console.log('欢迎语:', info.welcomeSpeech);
console.log('数字人ID:', info.digitalHumanId);
console.log('数字人名称:', info.digitalHumanName);
console.log('说话视频地址:', info.videoSource?.speakUrl);
console.log('不说话视频地址:', info.videoSource?.noSpeakUrl);
初始化 AI 助手
Api 方法: setupAIAssistant(aiAssistantInfo: Partial<PolyvAIAssistantInfo>, opts?: Object): Promise<void>
參數說明:
aiAssistantInfo:
Partial<PolyvAIAssistantInfo>類型,必傳opts:
Object類型,選傳,詳細類型說明如下
| 參數名 | 說明 | 類型 | 必須 | 預設值 |
|---|---|---|---|---|
independent |
- | boolean |
否 | - |
previewMode |
- | boolean |
否 | - |
傳送 AI 提問訊息
用於觀眾傳送提問訊息給 AI 助手,呼叫過程中會觸發 AIAssistantEvents.AIAssistantChatStatusChange 、AIAssistantEvents.AIAssistantChatMessage、AIAssistantEvents.ReplaceAIAssistantChatMessage 等事件。
Api 方法: sendAIQuestionMsg(__namedParameters: SendAIQuestionMsgOptions): Promise<void>
參數說明:
- __namedParameters:
SendAIQuestionMsgOptions類型,必傳,詳細類型說明如下
| 參數名 | 說明 | 類型 | 必須 | 預設值 |
|---|---|---|---|---|
content |
提問內容 | string |
是 | - |
取得 AI 助手聊天歷史
說明: 取得目前使用者與 AI 助手的聊天歷史記錄,包括問題和答案
Api 方法: getAIAssistantChatHistory(): Promise<PolyvAIAssistantChatMsgType[]>
回傳值說明: 聊天訊息陣列,按時間順序排列,Promise<PolyvAIAssistantChatMsgType[]> 類型
範例:
const assistantModule = new AIAssistantModule();
try {
const history = await assistantModule.getAIAssistantChatHistory();
console.log('历史消息数量:', history.length);
history.forEach(msg => {
if (msg.msgSource === PolyvAIAssistantChatMsgSource.Question) {
console.log('【用户提问】:', msg.content);
} else {
console.log('【AI 回答】:', msg.content);
}
});
} catch (error) {
console.error('获取聊天历史失败:', error);
}
建立 AI 助手音訊合成任務
說明: 將文字轉換為語音並產生音訊檔案,支援自訂語速和語音類型
Api 方法: createAiAssistantAudioTask(opts: Object): Promise<Object>
參數說明:
- opts:音訊合成參數,
Object類型,必傳,詳細類型說明如下
| 參數名 | 說明 | 類型 | 必須 | 預設值 |
|---|---|---|---|---|
rate |
語速倍率,預設 1(正常速度),範圍 0.5-2 | number |
否 | - |
text |
要轉換的文字內容,必填 | string |
是 | - |
ttsVoiceId |
語音 ID,可選,不同的 ID 代表不同的語音風格 | string |
否 | - |
回傳值說明: 包含任務 ID 的物件,用於後續取得音訊結果,Promise<Object> 類型,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
taskId |
- | string |
範例:
const assistantModule = new AIAssistantModule();
// 创建音频合成任务
const { taskId } = await assistantModule.createAiAssistantAudioTask({
text: '欢迎观看直播,这是 AI 助手为您生成的语音内容',
rate: 1,
ttsVoiceId: 'female_zh_1'
});
console.log('任务ID:', taskId);
// 等待一段时间后获取音频结果
const audioResult = await assistantModule.getAiAssistantAudioTaskResult(taskId);
console.log('音频URL:', audioResult.audioUrl);
取得 AI 助手音訊合成任務結果
說明: 根據任務 ID 取得先前建立的音訊合成任務的結果,包括音訊 URL 和狀態
Api 方法: getAiAssistantAudioTaskResult(taskId: string): Promise<PostAiAssistantGetAudioTaskResultResponseData>
參數說明:
- taskId:音訊合成任務 ID(透過 createAiAssistantAudioTask 取得),
string類型,必傳
回傳值說明: 音訊任務結果物件,包含音訊位址和狀態資訊,Promise<PostAiAssistantGetAudioTaskResultResponseData> 類型
辨識音訊轉文字
說明: 將使用者上傳的音訊檔案辨識並轉換為文字內容
Api 方法: recognizeAudioBlobToText(params: Object): Promise<string>
參數說明:
- params:音訊辨識參數,
Object類型,必傳,詳細類型說明如下
| 參數名 | 說明 | 類型 | 必須 | 預設值 |
|---|---|---|---|---|
audioBlob |
音訊資料 Blob 物件,必填 | Blob |
是 | - |
audioType |
音訊格式類型,預設 'wav',可選 'mp3'、'wav'、'm4a' 等 | string |
否 | - |
回傳值說明: 辨識出的文字內容,Promise<string> 類型
範例:
const assistantModule = new AIAssistantModule();
// 假设已有音频 blob
const audioBlob = new Blob([audioData], { type: 'audio/wav' });
try {
const text = await assistantModule.recognizeAudioBlobToText({
audioBlob,
audioType: 'wav'
});
console.log('识别结果:', text);
// 可以将识别结果发送给 AI 助手
await assistantModule.sendAIQuestionMsg({ content: text });
} catch (error) {
console.error('音频识别失败:', error);
}
