在实时音视频场景中,若你希望启动智能体提供语音聊天服务,可以通过调用此接口实现。
你可以根据需要设定应用标识、房间 ID、订阅用户 ID 以及 ASR、TTS 和 LLM 相关高级配置,个性化定制智能体的行为和交互方式。
rtc.volcengineapi.com
。使用智能体进行对话前,你需要开通 ASR、 TTS 和大模型服务并配置相关策略,详情请参看开通服务。
关于调用接口的请求结构、公共参数、签名方法、返回结构,参看调用方法。
下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数。
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | StartVoiceChat | 接口名称。当前 API 的名称为 StartVoiceChat 。 |
Version | String | 是 | 2024-06-01 | 接口版本。当前 API 的版本为 2024-06-01 。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
AppId | String | 是 | 661e****543cf | 你的音视频应用的唯一标志,参看获取 AppId。 |
RoomId | String | 是 | Room1 | 房间的 ID,是房间的唯一标志。赋值规则参看参数赋值规范。 |
UserId | String | 是 | User1 | 客户端用户的 UserId。 |
Config | Object of Config | 是 | - | ASR、TTS 和 LLM 相关高级配置。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
BotName | String | 否 |
| 房间内智能体名称。赋值规则参看参数赋值规范。 注意 BotName 与 UserId 取值不能重复。 |
ASRConfig | Object of ASRConfig | 是 | - | 流式语音识别相关配置。 |
TTSConfig | Object of TTSConfig | 是 | - | 语音合成相关配置。 |
LLMConfig | Object | 是 |
| 大模型相关配置,不同的大模型该参数结构不同: |
SubtitleConfig | Object of SubtitleConfig | 否 | - | 房间内字幕相关配置。 |
InterruptMode | Integer | 否 |
| 打断模式。支持取值及含义如下:
|
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
AppId | String | 是 | 93****21 | 已开通流式语音服务的 AppId。 |
Cluster | String | 是 |
| 具体流式语音识别服务对应的 Cluster ID,可在流式语音服务控制台开通对应服务后查询。 |
VADConfig | Object of VADConfig | 否 | - | VAD 配置。 |
VolumeGain | Float | 否 |
| 音量增益值。降低采集音量,以减少噪音引起的 ASR 错误识别。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
SilenceTime | Integer | 否 |
| 判停时间。停顿时间若高于该值设定时间,则认为一句话结束。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
IgnoreBracketText | Array of Integer | 否 |
| 过滤大模型返回内容中指定标点符号中的文字后再进行语音合成。你需要在大模型 Prompt 中自行定义哪些内容放在指定标点符号内。具体参看过滤指定内容。
|
Provider | String | 是 |
| 语音合成服务提供商,支持取值及含义如下:
|
ProviderParams | Object | 是 |
| 服务配置参数。不同服务下该参数结构不同:
|
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
app | Object of App | 否 | - | 火山语音技术应用配置。 |
audio | Object of Audio | 否 | - | 火山语音技术音频配置。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
appid | String | 否 |
| 已开通需要的语音合成服务的 AppId。 注意 使用火山语音技术服务时,该参数为必填。 |
cluster | String | 否 |
| 具体语音合成服务对应的 Cluster ID。
|
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
voice_type | String | 否 |
| 具体语音合成服务开通音色 ID。
|
speed_ratio | Float | 否 |
| 语速。
|
volume_ratio | Float | 否 |
| 音量。 注意 仅使用语音合成服务时生效。 |
pitch_ratio | Float | 否 |
| 音高。 注意 仅使用语音合成服务时生效。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Authorization | String | 否 |
| API 密钥。前往 Minimax 账户管理-接口密钥获取。 注意 使用 MiniMax 服务时,该参数为必填。 |
Groupid | String | 否 |
| 用户所属组 ID。前往 Minimax 账号信息-基本信息获取。 注意 使用 MiniMax 服务时,该参数为必填。 |
model | String | 否 |
| 发起请求的模型版本:
注意 使用 MiniMax 服务时,该参数为必填。 |
voice_setting | Object of VoiceSetting | 否 | - | 音频配置。 |
URL | String | 否 |
| 请求语音合成 URL,取值固定为: 注意 使用 MiniMax 服务时,该参数为必填。 |
pronunciation_dict | Object of PronunciationDict | 否 | - | 特殊标注配置。可对特殊文字、符号指定发音。 |
timber_weights | Array of TimberWeights | 否 |
| 合成音色权重设置。可通过该参数设置多种音色混合,并调整每个具体音色权重。最多支持 4 种音色混合。 注意
|
stream | Boolean | 否 |
| 是否开启流式输出。
|
language_booststring | String | 否 |
| 增强指定小语种/方言场景下的语音表现。不同场景下取值及含义如下:
|
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
speed | Float | 否 |
| 语速,取值越大,语速越快。 |
vol | Float | 否 |
| 音量,取值越大,音量越高。 |
pitch | Float | 否 |
| 语调。 |
voice_id | String | 否 |
| 系统音色编号/复刻音色编号。
注意
|
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
tone | Array of String | 否 | ["燕少飞/(yan4)(shao3)(fei1)","达菲/(da2)(fei1)","omg/oh my god"] | 替换需要特殊标注的文字、符号及对应的注音。 替换发音(调整声调/替换其他字符发音),格式如下: ["燕少飞/(yan4)(shao3)(fei1)","达菲/(da2)(fei1)","omg/oh my god"] 声调用数字代替,一声(阴平)为1,二声(阳平)为2,三声(上声)为3,四声(去声)为4),轻声为5。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
voice_id | String | 否 | male-qn-jingying | 音色编号。当前仅支持系统音色,可前往 voice_setting.voice_id查询。 |
weight | Integer | 否 | 1 | 权重。取值为整数,单一音色取值占比越高,合成音色越像。取值范围为[1,100] 。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Mode | String | 是 | ArkV3 | 大模型名称,该参数固定取值: ArkV3 。 |
EndPointId | String | 否 |
| 推理接入点。使用方舟大模型时必填。 注意 EndPointId 与 BotId 不可同时填写,若同时填写,则 EndPointId 生效。 |
BotId | String | 否 |
| 智能体 ID。使用方舟智能体时为必填。 |
MaxTokens | Integer | 否 | 1024 | 输出文本的最大 token 限制。默认值为 1024 。 |
Temperature | Float | 否 | 0.1 | 采样温度,用于控制生成文本的随机性和创造性,值越大随机性越高。取值范围为(0,1] ,默认值为 0.1 。 |
TopP | Float | 否 |
| 采样的选择范围,控制输出 token 的多样性。模型将从概率分布中累计概率超过该取值的标记中进行采样,以确保采样的选择范围不会过宽,值越大输出的 token 类型越丰富。 |
SystemMessages | Array of String | 否 | ["你是小宁,性格幽默又善解人意。你在表达时需简明扼要,有自己的观点。"] | 大模型 System 角色预设指令,可用于控制模型输出。 |
UserMessages | Array of String | 否 | ["user:\"你是谁\"", "assistant:\"我是问答助手\"","user:\"你能干什么\"","user:\"我能回答问题\""] | 大模型 User 角色预设 Prompt,可用于增强模型的回复质量,模型回复时会优先参考此处内容。 |
HistoryLength | Integer | 否 |
| 历史问题轮数。默认值为 |
WelcomeSpeech | String | 否 | Hello | 智能体启动后的欢迎词。 |
Tools | Array of ToolParam | 否 |
| 使用 Function calling 功能时,模型可以调用的工具列表。仅支持函数作为工具,提供模型生成的 JSON 输入函数列表。 注意 Function calling 功能不支持和联网插件、知识库插件同时开启。 |
Prefill | Boolean | 否 |
| 将 ASR 中间结果提前送入大模型进行处理以降低延时。开启后会产生额外模型消耗。
注意 该功能不能和 Function calling 功能同时使用。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
type | String | 否 | function | 工具类型,当前仅支持取值 function 。 |
function | Object of FunctionDefinition | 否 | - | 模型可以调用的工具列表。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
name | String | 是 | get_current_weather | 函数的名称。 |
description | String | 否 | 获取指定城市的天气信息 | 对函数用途的描述,供模型判断何时以及如何调用该工具函数。 |
parameters | JSON Map | 否 |
| 函数请求参数,以 JSON Schema 格式描述。具体格式请参考 JSON Schema 文档。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Mode | String | 是 | CustomLLM | 大模型名称。使用第三方大模型时,该参数固定取值: CustomLLM 。 |
URL | String | 否 |
| 第三方大模型 URL,需要使用 HTTPS 域名。 注意 如需使用 http 域名进行测试,Feature 参数的值必须为 |
ModelName | String | 否 | name1 | 第三方大模型名称。 |
APIKey | String | 否 | pat*****123231 | Bearer Token 认证方式的大模型 token。 |
MaxTokens | Integer | 否 | 1024 | 输出文本的最大 token 限制。默认值为 1024 。 |
Temperature | Float | 否 | 0.1 | 采样温度,用于控制生成文本的随机性和创造性,值越大随机性越高。取值范围为(0,1] ,默认值为 0.1 。 |
TopP | Float | 否 |
| 采样的选择范围,控制输出 token 的多样性。模型将从概率分布中累计概率超过该取值的标记中进行采样,以确保采样的选择范围不会过宽,值越大输出的 token 类型越丰富。 |
SystemMessages | Array of String | 否 | ["你是小宁,性格幽默又善解人意。你在表达时需简明扼要,有自己的观点。"] | 大模型 System 角色预设指令,可用于控制模型输出。 |
UserMessages | Array of String | 否 | ["user:\"你是谁\"", "assistant:\"我是问答助手\"","user:\"你能干什么\"","user:\"我能回答问题\""] | 大模型 User 角色预设 Prompt,可用于增强模型的回复质量,模型回复时会优先参考此处内容。 |
HistoryLength | Integer | 否 |
| 历史问题轮数。默认值为 |
WelcomeSpeech | String | 否 | Hello | 智能体启动后的欢迎词。 |
Feature | String | 否 | {\"Http\":true} | 该参数固定取值:{\"Http\":true} ,表示使用 HTTP 域名进行测试。 |
Prefill | Boolean | 否 |
| 将 ASR 中间结果提前送入大模型进行处理以降低延时。开启后会产生额外模型消耗。
注意 该功能不能和 Function calling 功能同时使用。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
DisableRTSSubtitle | Boolean | 否 |
| 是否关闭房间内字幕回调。
|
ServerMessageUrl | String | 否 |
| 接收字幕结果的 URL 地址。 |
ServerMessageSignature | String | 否 |
| 鉴权签名。 |
本接口无特有的返回参数。公共返回参数请见返回结构。
其中返回值 Result
仅在请求成功时返回 ok
,失败时为空。
使用方舟大模型和火山引擎语音技术时:
POST https://rtc.volcengineapi.com?Action=StartVoiceChat&Version=2024-06-01 { "AppId": "661e****543cf", "RoomId": "Room1", "UserId": "User1", "Config": { "BotName": "audiobot_user1_1611736812853", "ASRConfig": { "AppId": "93****21", "Cluster": "volcengine_streaming_common" }, "TTSConfig": { "IgnoreBracketText": [ 1, 2 ], "Provider": "volcano", "ProviderParams": { "app": { "appid": "94****11", "cluster": "volcano_tts" }, "audio": { "voice_type": "BV002_streaming", "speed_ratio": 1, "volume_ratio": 1, "pitch_ratio": 1 } } }, "LLMConfig": { "Mode": "ArkV3", "EndPointId": "epid****212", "MaxTokens": 1024, "Temperature": 0.1, "TopP": 0.3, "SystemMessages": [ "你是小宁,性格幽默又善解人意。你在表达时需简明扼要,有自己的观点。" ], "UserMessages": [ "user:\"你是谁\"", "assistant:\"我是问答助手\"", "user:\"你能干什么\"", "user:\"我能回答问题\"" ], "HistoryLength": 3, "WelcomeSpeech": "Hello", } } }
{ "Result": "ok", "ResponseMetadata": { "RequestId": "202****420", "Action": "StartVoiceChat", "Version": "2024-06-01", "Service": "rtc", "Region": "cn-north-1" } }
使用第三方大模型和 MiniMax 时:
POST https://rtc.volcengineapi.com?Action=StartVoiceChat&Version=2024-06-01 { "AppId": "661e****543cf", "RoomId": "Room1", "UserId": "User1", "Config": { "BotName": "audiobot_user1_1611736812853", "ASRConfig": { "AppId": "93****21", "Cluster": "volcengine_streaming_common" }, "TTSConfig": { "IgnoreBracketText": [ 1, 2 ], "Provider": "minimax", "ProviderParams": { "Authorization": "eyJhbG****SUzI1N", "Groupid": "983*****669", "model": "speech-01-turbo", "URL": "https://api.minimax.chat/v1/t2a_v2", "stream": false, "voice_setting": { "speed": 1.0, "vol": 1.0, "pitch": 1.0 }, "pronunciation_dict": { "tone": [ "处理/(chu3)(li3)", "危险/dangerous" ] }, "language_boost": "Chinese,Yue", "timber_weights": [{ "voice_id": "male-qn-jingying", "weight": 70 }, { "voice_id": "wumei_yujie", "weight": 30 } ] } }, "LLMConfig": { "Mode": "CustomLLM", "URL": "https://test.com/path/to/app", "MaxTokens": 1024, "Temperature": 0, "TopP": 0.3, "SystemMessages": [ "你是小宁,性格幽默又善解人意。你在表达时需简明扼要,有自己的观点。" ], "UserMessages": [ "user:\"你是谁\"", "assistant:\"我是问答助手\"", "user:\"你能干什么\"", "user:\"我能回答问题\"" ], "HistoryLength": 3, "WelcomeSpeech": "Hello" } } }
{ "Result": "ok", "ResponseMetadata": { "RequestId": "202****420", "Action": "StartVoiceChat", "Version": "2024-06-01", "Service": "rtc", "Region": "cn-north-1" } }