一知开放平台
  1. 短视频离线合成API
一知开放平台
  • 账户权益管理API
    • 开发说明
    • 实际登陆接口
      POST
    • 订单列表-用户充值消耗明细
      POST
    • 登录接口openApi
      POST
    • 数字人作品校验
      POST
    • 充值
      POST
    • 用户资源详情查询
      GET
    • 消息已读接口
      POST
    • 登出接口openApi
      POST
    • 更改账户状态
      POST
    • 获取用户直播并发详情
      GET
    • 消息列表
      POST
    • 创建用户
      POST
  • 短视频离线合成API
    • 调用须知
    • 常见问题
    • 流式TTS-音色需报备
    • 短视频作品合成、编辑和查询
      • 创建视频合成任务-音频文件
      • 创建视频合成任务-TTS合成
      • 更新视频作品名称
      • 合成任务状态查询接口
      • 查询合成视频作品列表
      • 短视频作品创建草稿
      • 删除视频作品
      • 复制短视频作品
      • 视频作品统计
      • 代理商查询其用户的所有视频作品列表
      • 预览短视频
      • 查询预览效果接口(轮询)
      • 模版列表
      • 模版详情
    • 音频作品合成、编辑和查询
      • 合成音频作品
      • 查询音频作品的详情
      • 音频作品的列表
      • 音频作品统计
      • 创建音频草稿
      • TTS合成接口
      • 代理商查询其用户的所有音频作品列表
      • 删除音频作品
      • TTS合成接口(支持标签)
    • 数字人和音色模型
      • 免费模特列表查询
      • 定制模特列表查询
      • 删除模特资产
      • AI合成音列表查询
      • AI合成音查询
      • 定制
      • 音色定制
      • 更新数字人模特名称
      • 更新音色资产名称
      • 删除定制声音资产
      • 同步至短视频平台
      • 同步至直播平台
    • 素材准备和编辑
      • 配音-录音上传
      • 获取上传的录音
      • 背景上传
      • 背景查询-静态背景
      • 背景查询-获取上传的背景
      • 根据音频生成字幕
      • 解析抖音短视频
      • 生成字幕
      • 获取oss签名
      • 获取oss上传ststoken
  • 直播OpenApi
    • 调用须知
    • 常见问题
    • 实时信息同步
    • 直播阿凡达模式WS连接
    • 直播流程相关
      • 直播间详情
      • 添加直播间素材,创建直播间
      • 开始直播
      • 获取开播的详情
      • 结束直播
      • 插入播放音频
      • 获取当前播放的音频信息
      • 跳转到指定场景指定音频播放
      • 直播间ping后端的接口 10s/次轮训
      • 获取当前账号正在直播的直播间信息
      • 导购商品手动加到插播列表
      • 开播前更新直播间配置
      • 直播中更新直播间素材
      • 直播中插入播放副本到列表
      • 预览直播接口
      • 获取预览链接
      • 获取当前账号正在直播的直播间列表
      • 直播并发列表接口
      • 删除直播间
      • 更新直播间的推流地址
      • 场景隐藏和公开
      • 删除当前已有的音频
      • 新增场景
      • 场景排序
    • 直播素材准备和编辑
      • 背景上传
      • 获取背景的集合
      • 创建素材
      • 素材列表
      • 音色列表
      • 新建商品
      • 类目列表
      • 删除商品
      • 商品列表
      • 编辑商品
  • 数字人互动
    • 互动素材准备和编辑
      • 删除素材
      • 背景上传
      • 素材列表
      • 获取背景的集合
      • 创建素材
    • 互动TalkTo版
      • 创建直播间
      • 开始直播
      • 对话接口
      • 退出直播
  1. 短视频离线合成API

流式TTS-音色需报备

连接#

域名(wss://meta-daily.yiwise.com)/openApisocket.io?app_id=xx&timestamp=xxx&authorization=xxx&req_from=C```
请使用socket.io连接

### 事件
1. 发送: ttsText,并有ACK消息返回,参数为
- voice:音色,需要提前报备部署
- text:合成文本
- pitchRate:语调,范围是-500~500,可选,默认是0。
- speechRate:语速,范围是-500~500,默认是0。

2. 接收:
- onTTSComplete:合成完毕
- onTTSFail: 合成失败
- onTTSMessage:实时返回音频流字节,PCM,16K

### 示例
import cn.hutool.core.codec.Base64;
import cn.hutool.json.JSONUtil;
import com.aigc.demo.util.RequestUtil;
import com.aigc.demo.util.SocketSSL;
import io.socket.client.Ack;
import io.socket.client.IO;
import io.socket.client.Socket;
import io.socket.emitter.Emitter;
import io.socket.engineio.client.transports.WebSocket;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URI;
/**
此类用于使用TTS合成语音,并且进行流式输出。注意:所使用的音色需要联系技术人员开通。
!!!!!!!!!!!注意:返回的是PCM!!!!!!!!!!!!!!!!
*/
public class TTSStream {
private static final Logger logger;
static {
System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
logger = LogManager.getLogger(TTSStream.class);
}
public static void main(String[] args) {
try {
IO.Options options = new IO.Options();
options.transports = new String[] {WebSocket.NAME};
options.rememberUpgrade = true;
options.secure = true;
options.path = "/openApisocket.io";;
SocketSSL.set(options);
Long time = System.currentTimeMillis()/1000;
options.query = "app_id=xxxx&timestamp=" + time +"&authorization=" + RequestUtil.getAuthorization(time) +"&req_from=C";
Socket socket = IO.socket(URI.create("wss://meta-daily.yiwise.com"), options);
// 监听连接事件
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("Connected to server");
}
});
socket.on("onConnect", new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("Connected to server " + args[0]);
}
});
socket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
@Override
public void call(Object... args) {
for (Object arg : args) {
System.out.println("Connected to server error: " + arg);
}
}
});
File file =new File("test.pcm");
FileOutputStream fout = new FileOutputStream(file);
// 监听TTS合成完毕事件
socket.on("onTTSComplete", new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("onTTSComplete: " + args[0]);
try {
fout.close();
}catch (Exception e) {
e.printStackTrace();
}
}
});
// 监听TTS合成流式输出
socket.on("onTTSMessage", new Emitter.Listener() {
@Override
public void call(Object... args) {
//System.out.println("onTTSMessage: " + args[0]);
try {
String encode = (String) args[0];
byte[] bytes = Base64.decode(encode);
System.out.println(bytes.length);
fout.write(bytes);
}catch (Exception e){
e.printStackTrace();
}
}
});
// 监听TTS合成失败事件
socket.on("onTTSFail", new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("onTTSFail: " + args[0]);
}
});
// 连接到服务器
socket.connect();
//设置要和成的对象
TTSTextRequest request = new TTSTextRequest();
request.setText("你好啊,我是小智,很高兴为您服务。");
// 注意这个音色需要联系技术人员开通,否则无法使用流式输出
request.setVoice("xxxxx");
//语调,范围是-500500,可选,默认是0。
request.setPitchRate(10);
//语速,范围是-500
500,默认是0。
request.setSpeechRate(10);
socket.emit("ttsText", JSONUtil.parse(request), new Ack() {
@Override
public void call(Object... objects) {
if(objects != null) {
System.out.println("ttsText: " + JSONUtil.toJsonStr(objects));
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
修改于 2023-11-07 02:03:17
上一页
常见问题
下一页
创建视频合成任务-音频文件
Built with