合成数字人视频
本能力用于将已选定的数字人形象(定制数字人 或 数字人模板库 中的公共形象)与脚本、配音、字幕等组合,生成最终成片。它是数字人能力闭环中的成片输出环节,与「定制数字人 / 模板库」「语音合成」等能力配合使用。
创建视频合成任务
说明
异步任务,具体进度通过查询接口查看
QPS 10/min
请求地址
http
POST /open/v1/create_videoHeader
http
access_token: {{access_token}}请求参数 Body
| 字段 | 类型 | Nested Key | 类型 | 示例 | 说明 |
|---|---|---|---|---|---|
| person | object | id | string | C-d1af99e0fee34978bc844d43078bf8c9 | 形象列表返回的id |
| x | int | 0 | x位置 | ||
| y | int | 480 | y位置 | ||
| figure_type | string 非必传 | whole_body | 仅使用公共数字人时,需传该参数。 | ||
| width | int | 1080 | 宽 | ||
| height | int | 1920 | 高 | ||
| drive_mode | string 非必传 | "" / random | 驱动模式。支持正常顺序驱动,和随机帧动作驱动random。默认正常顺序驱动 | ||
| is_rgba_mode | bool 非必传,默认false | true | 是否驱动四通道webm 视频。 注意事项: 1. 需要数字人是 webm 格式四通道视频定制的 2. 2025年2月8号以及之后定制的数字人开始生效。 3. 该方式生成的数字人合成视频不含字幕以及背景 | ||
| backway | int 非必传,默认1 | 1 | 指定数字人驱动到素材末尾的播放顺序,1正放,2倒放 | ||
| audio | object | tts | object | text | 文本, 字符串数组,所有内容放到一个字符串上面。使用标点符号分割就行,不用分多个字符串。文本长度限制为4000以下 多音字支持参考本页 《SSML》 |
| speed | 浮点数类型,语速范围请在0.5和2之间 | ||||
| audio_man | 数字人中列表中的audio_man_id数字人的音色(支持api公共声音和api定制声音) | ||||
| pitch | 音调,定制声音的音调范围参考《创建语音生成任务》 | ||||
| file_id | string | 通过文件管理上传的音频文件驱动数字人(如需支持字幕,请上传采样率为8000 Hz、16000 Hz,声道类型为单声道的音频),目前只支持以下两种编码:audio/x-wav, audio/mpeg | |||
| wav_url | string | mp3、m4a 或者 wav 视频文件,音频文件链接后缀需要带有文件类型,根据音频文件驱动数字人(如需支持字幕,请上传采样率为8000 Hz、16000 Hz,声道类型为单声道的音频),目前只支持以下四种编码:audio/x-wav, audio/mpeg, audio/m4a, video/mp4 | |||
| type | string | tts / audio 二选一 | 生成声音类型,当前默认tts表示通过tts文本生成。 audio表示通过音频文件生成。 | ||
| volume | int | 100 | 音量 | ||
| language | string | cn | 语言类型,默认 cn | ||
| bg_color | string | 背景颜色 #EDEDED | |||
| bg | object,可选 | src_url | string | https://res.chanjing.cc/chanjing/static/res/bg/2024-07-22/452976e919084de0abc8764b4ee5f800.png | 背景图片地址,仅支持 jpg,png格式 |
| x | int | 0 | x坐标 | ||
| y | int | 0 | y坐标 | ||
| height | int | 1920 | 图片高度 | ||
| width | int | 1080 | 图片宽度 | ||
| file_id | string | 0 | 通过文件管理上传的背景素材id | ||
| subtitle_config | object, 可选。 字体大小与字体宽高位置计算比较麻烦,相关参数都推荐使用默认值 | x | int | 31 | x坐标,字体显示范围的起始x坐标,推荐31(4K视频推荐80) |
| y | int | 1521 | y坐标,字体显示范围的起始y坐标,推荐1521(4K视频推荐2840) | ||
| show | bool | true | 是否显示字幕 | ||
| width | int | 1000 | 字体显示范围的宽,推荐使用1000(4K视频推荐2000) | ||
| height | int | 200 | 字体显示范围的高,推荐使用200(4K视频推荐1000) | ||
| font_size | int | 64 | 字体大小,推荐64(4K视频推荐150) | ||
| color | string,可选 | #000000 | 字体颜色值 | ||
| stroke_color | string,可选 | #000000 | 字体描边颜色值 | ||
| stroke_width | int,可选 | 7 | 字体描边宽度,推荐使用7 | ||
| font_id | string,可选 | 字体id | 《获取支持的字体列表》 | ||
| asr_type | int,可选 | 0 | 字幕时间戳来源 0自动生成 1用户输入 | ||
| subtitles | array,可选 | 时间轴数组 | 自定义字幕时间轴 | ||
| begin_time | int,可选 | 0 | |||
| end_time | int,可选 | 0 | |||
| text | string | 字幕内容 | |||
| screen_width | int | 屏幕宽度默认 1080。 | |||
| screen_height | int | 屏幕高度默认 1920。 | |||
| model | int | 1 | 非必填,默认0基础版[蝉镜lip-sync模型](1蝉豆/秒),1为高质版[蝉镜lip-sync pro模型](2蝉豆/秒),2为卡通形象专用[训练素材必须为卡通形象](3蝉豆/秒) | ||
| callback | string | 任务结束后会向该地址发送一个 POST 请求。请求体的格式和拉取视频详情查询结果返回的 data 相同 | |||
| add_compliance_watermark | bool | true | 是否添加 AI 作品合规水印 | ||
| compliance_watermark_position | int | 0-左上 1-右上 2-左下 3-右下 | 默认值为0,左上,支持自定义方位 | ||
| resolution_rate | int | 0-1080p 1-4K | 默认0。进行4K视频合成时,请自行调整屏幕宽高,且需要数字人支持4K视频合成(即support_4k为true) |
数字人 person.id 和 audio.tts.audio_man 请求id 参考《拉取形象列表》返回id
回调参数
json
{
"id": "1914661228878233600",
"status": 30,
"progress": 100,
"msg": "",
"video_url": "https://res.chanjing.cc/chanjing/prod/dhaio/output/2025-04-22/1914661228878233600-1745325829-output.mp4",
"subtitle_data_url": "",
"create_time": 1745325784,
"preview_url": "https://res.chanjing.cc/chanjing/prod/dhaio/output/2025-04-22/1914661228878233600-1745325829-cover.jpg",
"duration": 45,
"audio_urls": [
"https://res.chanjing.cc/chanjing/res/upload/tts/2025-04-22/c316fca6f821df9ea8874f8fa106ce38.wav"
]
}请求示例
json
{
"person": {
"id":"C-d1af99e0fee34978bc844d43078bf8c9",
"x": 0,
"y": 480,
"width": 1080,
"height": 1440
},
"audio": {
"tts": {
"text": [
"君不见黄河之水天上来,奔流到海不复回。"
],
"speed": 1,
"audio_man": "C-f2429d07554749839849497589199916"
},
"wav_url":"http://chanjian.cc/2024-07-17/a7b3696424262c07add42b24dadfb08f.wav",
"type": "tts",
"volume": 100,
"language": "cn"
},
"bg_color": "#EDEDED",
"screen_width": 1080,
"screen_height": 1920
}响应JOSN
json
{
"trace_id": "8d10659438827bd4d59eaa2696f9d391",
"code": 0,
"msg": "success",
"data": "9499ed79995c4bdb95f0d66ca84419fd"
}响应参数
| 字段 | 说明 |
|---|---|
| code | 响应状态码 |
| msg | 响应消息 |
| data | 创建视频id |
响应状态码说明
| code | 说明 |
|---|---|
| 0 | 响应成功 |
| 400 | 传入参数格式错误 |
| 10400 | AccessToken验证失败 |
| APP状态错误 | |
| 缺少 tts 文本 | |
| 缺少音频文件 | |
| 输入文本不可以包含 emoji | |
| 不支持的图片格式,支持png,jpeg,jpg格式图片 | |
| 参数 screen_width 或者 screen_height 不合法 | |
| 字幕宽度不能超过屏幕宽度 | |
| 字幕高度不能超过屏幕高度 | |
| 字幕颜色格式不正确,正确格式为 #RRGGBB | |
| 该数字人不是 webm 类型,无法生成四通道视频 | |
| 该数字人需制定形态参数 figure_type | |
| 背景颜色格式不正确,正确格式为 #RRGGBB | |
| 40000 | 参数错误 |
| 40001 | 超出QPS限制 |
| 40002 | 制作视频时长到达上限 |
| 50000 | 系统内部错误 |
| 定制数字人不存在 | |
| 该公共数字人没有选择正确的形象 | |
| 数字人高不允许为奇数 | |
| 没有找到对应的声ID | |
| 声音ID对应的audio_man不存在 | |
| 50011 | 作品存在不合法规文字内容 |
示例代码
bash
curl -L 'https://www.chanjing.cc/api/open/v1/create_video' -H 'access_token: Yqmvg4SOinq+i0RLAHmwd03zuZxYrdT92gIwNluONtjOCr0FCVDCBWDFCTp8o4Y6' -H 'Content-Type: application/json' -d '{
"person": {
"id": "1421df93d7754ee19dcaa18e85b68f39",
"x": 0,
"y": 0,
"width": 1080,
"height": 1920,
"figure_type": "sit_body",
"drive_mode":"random"
},
"audio": {
"tts": {
"text": ["你好,这是测试蝉镜数字人,黄河之水天上来"],
"speed": 1,
"audio_man": "C-CASE-d8dfe5838e774124b04e0ad41c194847"
},
"wav_url": "",
"type": "tts",
"volume": 100,
"language": "cn"
},
"bg_color": "#d92127",
"screen_width": 1080,
"screen_height": 1920
}
'go
import requests
import json
url = "https://www.chanjing.cc/api/open/v1/create_video"
payload = json.dumps({
"person": {
"id": "1421df93d7754ee19dcaa18e85b68f39",
"x": 0,
"y": 0,
"width": 1080,
"height": 1920,
"figure_type": "sit_body",
"drive_mode": "random"
},
"audio": {
"tts": {
"text": [
"你好,这是测试蝉镜数字人,黄河之水天上来"
],
"speed": 1,
"audio_man": "C-CASE-d8dfe5838e774124b04e0ad41c194847"
},
"wav_url": "",
"type": "tts",
"volume": 100,
"language": "cn"
},
"bg_color": "#d92127",
"screen_width": 1080,
"screen_height": 1920
})
headers = {
'access_token': 'Yqmvg4SOinq+i0RLAHmwd03zuZxYrdT92gIwNluONtjOCr0FCVDCBWDFCTp8o4Y6',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)java
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"person\": {\n \"id\": \"1421df93d7754ee19dcaa18e85b68f39\",\n \"x\": 0,\n \"y\": 0,\n \"width\": 1080,\n \"height\": 1920,\n \"figure_type\": \"sit_body\",\n \"drive_mode\":\"random\"\n },\n \"audio\": {\n \"tts\": {\n \"text\": [\"你好,这是测试蝉镜数字人,黄河之水天上来\"],\n \"speed\": 1,\n \"audio_man\": \"C-CASE-d8dfe5838e774124b04e0ad41c194847\"\n },\n \"wav_url\": \"\",\n \"type\": \"tts\",\n \"volume\": 100,\n \"language\": \"cn\"\n },\n \"bg_color\": \"#d92127\",\n \n \"screen_width\": 1080,\n \"screen_height\": 1920\n}\n");
Request request = new Request.Builder()
.url("https://www.chanjing.cc/api/open/v1/create_video")
.method("POST", body)
.addHeader("access_token", "Yqmvg4SOinq+i0RLAHmwd03zuZxYrdT92gIwNluONtjOCr0FCVDCBWDFCTp8o4Y6")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();py
import requests
import json
url = "https://www.chanjing.cc/api/open/v1/create_video"
payload = json.dumps({
"person": {
"id": "1421df93d7754ee19dcaa18e85b68f39",
"x": 0,
"y": 0,
"width": 1080,
"height": 1920,
"figure_type": "sit_body",
"drive_mode": "random"
},
"audio": {
"tts": {
"text": [
"你好,这是测试蝉镜数字人,黄河之水天上来"
],
"speed": 1,
"audio_man": "C-CASE-d8dfe5838e774124b04e0ad41c194847"
},
"wav_url": "",
"type": "tts",
"volume": 100,
"language": "cn"
},
"bg_color": "#d92127",
"screen_width": 1080,
"screen_height": 1920
})
headers = {
'access_token': 'Yqmvg4SOinq+i0RLAHmwd03zuZxYrdT92gIwNluONtjOCr0FCVDCBWDFCTp8o4Y6',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)获取视频列表
请求地址
http
POST /open/v1/video_listHeader
http
access_token: {{access_token}}请求参数 Body
json
{
"page": 1,
"page_size": 2
}响应
响应示例
json
{
"trace_id": "",
"code": 0,
"msg": "",
"data": {
"List": [
{
"id": "e971e4d68fd14bfe8b48eaa8353fa7b0",
"status": 30,
"progress": 100,
"msg": "",
"video_url": "https://chanjin.cc/1721187131363-31e83acd98766ab783e8ee10085c922c66d43d32-video.mp4",
"create_time": 1721187066,
"preview_url": "https://chanjin.cc/1721187131363-31e83acd98766ab783e8ee10085c922c66d43d32-cover.png"
},
],
"PageInfo": {
"page": 1,
"size": 5,
"total_count": 5,
"total_page": 1
}
}
}响应字段说明
| 一级字段 | 二级字段 | 三级字段 | 说明 |
|---|---|---|---|
| code | 响应状态码 | ||
| msg | 响应消息 | ||
| data | 响应数据 | ||
| List | 视频列表 | ||
| id | 视频id | ||
| status | 状态,10,生成中;30成功; 4X参数异常;5X服务异常; | ||
| progress | 任务进度 0-100 | ||
| msg | 异常或失败的错误信息 | ||
| video_url | 视频播放地址 | ||
| subtitle_data_url | 字幕时间轴链接,需要下载该文件获取,时间轴字段说明参考:《获取视频详情》 | ||
| create_time | 视频生成时间,时间戳 | ||
| preview_url | 视频预览图片 | ||
| duration | 视频时长(单位秒) | ||
| queue_status | 排队状态,枚举值:queued 排队中、processing 处理中、completed 已完成、failed 失败、other 其他 | ||
| queue_desc | 排队/处理说明文案,与 msg(错误信息)分离 | ||
| PageInfo | 分页信息 | ||
| page | 当前页码 | ||
| size | 页面大小 | ||
| total_count | 视频总数 | ||
| total_page | 总页数 |
响应状态码说明
| code | 说明 |
|---|---|
| 0 | 响应成功 |
| 400 | 传入参数格式错误 |
| 10400 | AccessToken验证失败 |
| APP状态错误 | |
| 40000 | 参数错误 |
| 50000 | 系统内部错误 |
示例代码
bash
curl -L -X POST 'https://www.chanjing.cc/api/open/v1/video_list' -H 'access_token: NPSMe0G338uGmGEIAWfjfoI+YaGFquongf70BsiOOUifE+icRi3tEae1G2TaH/Db' -H 'Content-Type: application/json' -d '{"page":1,"page_size":5}'go
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.chanjing.cc/api/open/v1/video_list"
method := "POST"
payload := strings.NewReader(`{"page":1,"page_size":5}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("access_token", "NPSMe0G338uGmGEIAWfjfoI+YaGFquongf70BsiOOUifE+icRi3tEae1G2TaH/Db")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}java
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"page\":1,\"page_size\":5}");
Request request = new Request.Builder()
.url("https://www.chanjing.cc/api/open/v1/video_list")
.method("POST", body)
.addHeader("access_token", "NPSMe0G338uGmGEIAWfjfoI+YaGFquongf70BsiOOUifE+icRi3tEae1G2TaH/Db")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();py
import requests
import json
url = "https://www.chanjing.cc/api/open/v1/video_list"
payload = json.dumps({
"page": 1,
"page_size": 5
})
headers = {
'access_token': 'NPSMe0G338uGmGEIAWfjfoI+YaGFquongf70BsiOOUifE+icRi3tEae1G2TaH/Db',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)获取视频详情
请求地址
http
GET /open/v1/videoHeader
http
access_token: {{access_token}}请求参数 Query Params
| Key | Value | |
|---|---|---|
| id | d5183e2974c2453a84173a8bdb556504 | 视频id,创建任务时返回 |
响应
字幕时间轴字段说明
json
[
{
"min_time": 0,// 开始时间 毫秒
"max_time": 734,// 结束时间 毫秒
"subtitles": "James Morgan", // 字幕内容
"start_frame": 0,// 开始的帧位置
"end_frame": 18,// 结束的帧位置
"fps": 25, // 帧率
"key": "cbfd3f7722c81fd00dfb1782e960038810944de3"
},
{
"min_time": 734,
"max_time": 1454,
"subtitles": "Jimmy McGill",
"start_frame": 18,
"end_frame": 36,
"fps": 25,
"key": "94a2f234fb26fe53495b69fca7d0800e078815bc"
}
]响应示例
json
{
"trace_id": "536f686fcf0c7d1067b22739bf02cde6",
"code": 0,
"msg": "success",
"data": {
"id": "d5183e2974c2453a84173a8bdb556504",
"status": 30,
"progress": 100,
"msg": "",
"video_url": "https://test/2024-08-08/1723102332817-66d7b17c0dabaa1d826afc0ff6b5587a21d0a8e7-video.mp4",
"create_time": 1723102269,
"subtitle_data_url" : "",
"preview_url": "https://test/2024-08-08/1723102332817-66d7b17c0dabaa1d826afc0ff6b5587a21d0a8e7-cover.png",
"duration": 34,
"queue_status": "completed",
"queue_desc": ""
}
}响应字段说明
| 一级字段 | 二级字段 | 说明 |
|---|---|---|
| code | 响应状态码 | |
| msg | 响应消息 | |
| data | 响应数据 | |
| id | 视频id | |
| status | 状态,10,生成中;30成功; 4X参数异常;5X服务异常; | |
| progress | 任务进度 0-100 | |
| msg | 异常或失败的错误信息 枚举: 蝉豆不足扣费失败 您需要至少输入1S以上的内容 音频中没有人声,请检查是否为单声道 不支持的音频格式,仅支持:audio/x-wav,audio/mpeg,audio/m4a,video/mp4 不支持纯数字文本 上传音频文件失败 上传背景文件失败, 请检查网络 暂不支持该语种 | |
| video_url | 视频播放地址 | |
| subtitle_data_url | 字幕时间轴链接,需要下载该文件获取 | |
| create_time | 视频生成时间,时间戳 | |
| preview_url | 视频预览图片 | |
| duration | 视频时长(单位秒) | |
| queue_status | 排队状态,枚举值:queued 排队中、processing 处理中、completed 已完成、failed 失败、other 其他 | |
| queue_desc | 排队/处理说明文案,与 msg(错误信息)分离 |
响应状态码说明
| code | 说明 |
|---|---|
| 0 | 响应成功 |
| 10400 | AccessToken验证失败 |
| APP状态错误 | |
| 40000 | 参数错误 |
| 50000 | 系统内部错误 |
示例代码
shell
curl -L 'https://www.chanjing.cc/api/open/v1/video?id=d5183e2974c2453a84173a8bdb556504' -H 'access_token: HjKpDp6o3o2P2el7VHaMKwpHIJs+rkYNspNBRAZ7VU8WC/bz93oUKUNhHENRt28x'go
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.chanjing.cc/api/open/v1/video?id=d5183e2974c2453a84173a8bdb556504"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("access_token", "HjKpDp6o3o2P2el7VHaMKwpHIJs+rkYNspNBRAZ7VU8WC/bz93oUKUNhHENRt28x")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}java
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("https://www.chanjing.cc/api/open/v1/video?id=d5183e2974c2453a84173a8bdb556504")
.method("GET", body)
.addHeader("access_token", "HjKpDp6o3o2P2el7VHaMKwpHIJs+rkYNspNBRAZ7VU8WC/bz93oUKUNhHENRt28x")
.build();
Response response = client.newCall(request).execute();py
import requests
url = "https://www.chanjing.cc/api/open/v1/video?id=d5183e2974c2453a84173a8bdb556504"
payload = {}
headers = {
'access_token': 'HjKpDp6o3o2P2el7VHaMKwpHIJs+rkYNspNBRAZ7VU8WC/bz93oUKUNhHENRt28x'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)视频删除
说明
异步任务
QPS 10/min
请求地址
http
POST /open/v1/delete_videoHeader
http
access_token: {{access_token}}
Content-Type: application/json请求参数 Body
| 参数名称 | 类型 | 是否必传 | 示例 | 说明 |
|---|---|---|---|---|
| id | string | 是 | 23a553a3-e9bb-4049-a106-d651231c149f | 视频ID |
请求示例
json
{
"id":"23a553a3-e9bb-4049-a106-d651231c149f"
}响应JSON
json
{
"trace_id": "26965518b54aeccc6a34dfc49c1ca7c8",
"code": 0,
"msg": "success"
}响应参数
| 字段 | 说明 |
|---|---|
| code | 响应状态码 |
| msg | 响应消息 |
响应状态号说明
| code | 说明 |
|---|---|
| 0 | 响应成功 |
| 400 | 传入参数格式错误 |
| 40000 | 参数错误 |
| 40001 | 超出QPS限制 |
| 50000 | 系统内部错误 |
| 没有找到对应的视频 |
获取支持的字体列表
请求地址
http
GET /open/v1/font_listHeader
http
access_token: {{access_token}}请求参数 Query Params
无
响应
响应示例
json
{
"trace_id": "66d968c8861396c03226a01156fb6279",
"code": 0,
"msg": "success",
"data": [
{
"id": "67761743410e421bbd0ea50739c9b1ee",
"name": "得意黑",
"preview": "https://www.chanjing.cc/prj/chanying/res/font/9bd89969.png",
"ttf_path": "https://www.chanjing.cc/public/res/font/cccc24d2-7324-4342-93d7-367e071179e5.ttf"
},
{
"id": "55e7a4d323374b1686fc3330bbb00d0f",
"name": "MiSans",
"preview": "https://www.chanjing.cc/public/res/font/fefe0e6c.png",
"ttf_path": "https://www.chanjing.cc/public/res/font/d5b02524-6e98-40f7-bbf8-7e7094007ce1.ttf"
}
]
}响应字段说明
| 一级字段 | 二级字段 | 说明 |
|---|---|---|
| code | 响应状态码 | |
| msg | 响应消息 | |
| data | 响应数据列表 | |
| id | 字体id | |
| name | 字体名称 | |
| preview | 字体预览 | |
| ttf_path | 字体链接 |
响应状态码说明
| code | 说明 |
|---|---|
| 0 | 响应成功 |
| 400 | 传入参数格式错误 |
| 10400 | AccessToken验证失败 |
| 40000 | 参数错误 |
| 50000 | 系统内部错误 |
示例代码
bash
curl -L 'https://www.chanjing.cc/api/open/v1/font_list' -H 'access_token: 7iMxZ8sJ0ZX6ywrXzqvb/5qWuXKYulc7K3euSde2RyVrKvk+twv72v9S8EOSf40d' -H 'Content-Type: application/json'go
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.chanjing.cc/api/open/v1/font_list"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("access_token", "7iMxZ8sJ0ZX6ywrXzqvb/5qWuXKYulc7K3euSde2RyVrKvk+twv72v9S8EOSf40d")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}java
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("https://www.chanjing.cc/api/open/v1/font_list")
.method("GET", body)
.addHeader("access_token", "7iMxZ8sJ0ZX6ywrXzqvb/5qWuXKYulc7K3euSde2RyVrKvk+twv72v9S8EOSf40d")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();py
import requests
import json
url = "https://www.chanjing.cc/api/open/v1/font_list"
payload = {}
headers = {
'access_token': '7iMxZ8sJ0ZX6ywrXzqvb/5qWuXKYulc7K3euSde2RyVrKvk+twv72v9S8EOSf40d',
'Content-Type': 'application/json'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)SSML
<phoneme>指定字词发音(音素)
描述
<phoneme>用于手动指定部分字词的发音。通常用于纠正TTS为多音字自动生成的不准确发音。
属性
| 参数 | 类型 | 功能 | 取值 |
|---|---|---|---|
alphabet | enum | 指定表示发音(音素)的格式 | * 中文 * py拼音* 英文 * cmu CMU音标格式* ipa柯林斯美音音标 |
ph | string | 指定发音(音素) | * 不同的 * 参见下文“注意事项”部分 |
拼音
注意事项
- 用于中文前端。
- 使用空格分隔多个拼音。
- 不区分大小写。
- 子元素必须为纯文本,且为一个或多个汉字,不应出现标点符号。
- 声母是可选的。
- 音调包括:
- 1 - 阴平、2 - 阳平、3 - 上声、4 - 去声
- 5 - 轻声
示例
xml
《茜茜公主》是奥地利拍摄的历史题材的德语三部曲电影。xml
<phoneme alphabet="py" ph="xi1">茜</phoneme><phoneme alphabet="py" ph="xi1">茜</phoneme>公主》是奥地利拍摄的历史题材的德语三部曲电影。<break time>插入停顿时间
描述
<break time = 停顿秒数" />用于手动插入句子的停顿点以及需要停顿的时间。
示例
xml
《茜茜公主》是奥地利(停顿0.5秒)拍摄的历史题材的(停顿0.5秒)德语三部曲电影。xml
《茜茜公主》是奥地利<break time=\"0.5s\"/>拍摄的历史题材的<break time=\"0.5s\"/>德语三部曲电影。<ttnumber pronounce>自定义文字读法
描述
<ttnumber pronounce="自定义读法">用于自定义文字读法。
示例
xml
《茜茜公主》于1955年首映,片长约105分钟。xml
《茜茜公主》于<ttnumber pronounce=\"一九五五\">1955</ttnumber>年首映,片长约<ttnumber pronounce=\"一百零五\">105</ttnumber>分钟。