资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

长文本在线合成JAVA SDK

快速入门

安装Speech Java SDK

Speech Java SDK目录结构

com.baidu.aip
       ├── auth                                //签名相关类
       ├── http                                //Http通信相关类
       ├── client                              //公用类
       ├── exception                           //exception类
       ├── speech
       │       └── AipSpeech           //AipSpeech类
       └── util                                //工具类

支持 JAVA版本:1.7+

查看源码 Java SDK代码现已公开,您可以查看代码、或者在License范围内修改和编译SDK以适配您的环境。请点击此处下载java sdk源代码。

使用maven依赖

添加以下依赖即可。其中版本号可在maven官网查询

<dependency>
    <groupId>com.baidu.aip</groupId>
    <artifactId>java-sdk</artifactId>
    <version>${version}</version>
</dependency>

直接使用JAR包步骤如下

1.在官方网站下载识别、合成 RESTful API Java SDK压缩工具包。

2.将下载的aip-java-sdk-version.zip解压后,复制到工程文件夹中。

3.在Eclipse右键“工程 -> Properties -> Java Build Path -> Add JARs”。

4.添加SDK工具包aip-java-sdk-version.jar和第三方依赖工具包json-20160810.jar log4j-1.2.17.jar

其中,version为版本号,添加完成后,用户就可以在工程中使用Speech Java SDK。

新建AipSpeech

AipSpeech是语音识别与合成的Java客户端,为使用语音合成的开发人员提供了一系列的交互方法。

用户可以参考如下代码新建一个AipSpeech,初始化完成后建议单例使用,避免重复获取access_token:

public class LongTtsCreate {
    // 设置APPID/AK/SK
    public static final String APP_ID = "你的 App ID";
    public static final String API_KEY = "你的 Api Key";
    public static final String SECRET_KEY = "你的 Secret Key";
    public static void main(String[] args) {
        // 初始化一个AipSpeech
        AipSpeech client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);
        List<String> texts = Arrays.asList(
                "你好百度,",
                "你好世界。"
        );

        // 可选参数
        HashMap<String, Object> options = new HashMap<String, Object>();
        // 音频格式
        options.put("format", "mp3-16k"); //  "mp3-16k","mp3-48k","wav","pcm-8k","pcm-16k",默认为mp3-16k
        // 音库
        options.put("voice", 0); // 可选,具体参考文档
        // 语速
        options.put("speed", 5); // 取值0-15,默认为5中语速
        // 语调
        options.put("pitch", 5); // 取值0-15,默认为5中语调
        // 音量
        options.put("volume", 5); // 音量,基础音库取值0-9,精品音库取值0-15,默认为5中音量(取值为0时为音量最小值,并非为无声)
        // 是否开启字幕时间戳
        options.put("enable_subtitle", 0); // 取值范围0, 1, 2,默认为0。0表示不开启字幕时间戳,1表示开启句级别字幕时间戳,2表示开启词级别字幕时间戳
        // 段落间隔
        options.put("break", 0); // 取值 0-5000 ,单位ms,用于合成文本分段传入时设置段落间间隔。

        JSONObject res = client.longTextSynthesisCreate(texts, "zh", options);

        System.out.println(res);
    }
}

在上面代码中,常量APP_ID在百度云控制台中创建,常量API_KEYSECRET_KEY是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。

配置AipSpeech

如果用户需要配置AipSpeech的一些细节参数,可以在构造AipSpeech之后调用接口设置参数,目前只支持以下参数:

接口 说明
setConnectionTimeoutInMillis 建立连接的超时时间(单位:毫秒)
setSocketTimeoutInMillis 通过打开的连接传输数据的超时时间(单位:毫秒)
setHttpProxy 设置http代理服务器
setSocketProxy 设置socket代理服务器 (http和socket类型代理服务器只能二选一)

接口说明

长文本合成

详细文档参考官网:https://ai.baidu.com/ai-doc/SPEECH/ulbxh8rbu

接口描述

长文本在线合成接口可以将10万字以内文本一次性合成,异步返回音频。支持多种优质音库,将超长文本快速转换成稳定流畅、饱满真实的音频。适用于阅读听书、新闻播报等客户。

步骤

1、根据文本内容、音频格式、音库等参数创建语音合成任务,获取task_id参数。

2、根据task_id的数组批量查询语音合成任务结果。

一、长文本合成-创建任务

请求说明
package org.example;
import com.baidu.aip.speech.AipSpeech;
import org.json.JSONObject;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

public class LongTtsCreate {
    // 设置APPID/AK/SK
    public static final String APP_ID = "你的 App ID";
    public static final String API_KEY = "你的 Api Key";
    public static final String SECRET_KEY = "你的 Secret Key";
    public static void main(String[] args) {
        // 初始化一个AipSpeech
        AipSpeech client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);
        List<String> texts = Arrays.asList(
                "你好百度,",
                "你好世界。"
        );

        // 可选参数
        HashMap<String, Object> options = new HashMap<String, Object>();
        // 音频格式
        options.put("format", "mp3-16k"); //  "mp3-16k","mp3-48k","wav","pcm-8k","pcm-16k",默认为mp3-16k
        // 音库
        options.put("voice", 0); // 可选,具体参考文档
        // 语速
        options.put("speed", 5); // 取值0-15,默认为5中语速
        // 语调
        options.put("pitch", 5); // 取值0-15,默认为5中语调
        // 音量
        options.put("volume", 5); // 音量,基础音库取值0-9,精品音库取值0-15,默认为5中音量(取值为0时为音量最小值,并非为无声)
        // 是否开启字幕时间戳
        options.put("enable_subtitle", 0); // 取值范围0, 1, 2,默认为0。0表示不开启字幕时间戳,1表示开启句级别字幕时间戳,2表示开启词级别字幕时间戳
        // 段落间隔
        options.put("break", 0); // 取值 0-5000 ,单位ms,用于合成文本分段传入时设置段落间间隔。

        JSONObject res = client.longTextSynthesisCreate(texts, "zh", options);

        System.out.println(res);
    }
}

参数详解

参数名称 类型 是否必需 说明
text list 待合成文本,需要为UTF-8编码;输入多段文本时,文本间会插入1s长度的空白间隔
总字数不超过10万个字符,1个中文字、英文字母、数字或符号均算作1个字符
format string 音频格式,取值为"mp3-16k","mp3-48k","wav","pcm-8k","pcm-16k",默认为mp3-16k
voice int 发音人选择,具体值参考音色列表
speed int 语速,取值 0-15,默认为 5 中语速
pitch int 音调,取值 0-15,默认为 5 中语调
volume int 音量,基础音库取值0-9,其他音库取值 0-15,默认为 5 中音量
取值为0时为音量最小值,并非为无声
enable_subtitle int 是否开启字幕时间戳,取值范围0, 1, 2,默认为0。
0表示不开启字幕时间戳,1表示开启句级别字幕时间戳,2表示开启词级别字幕时间戳
若希望自由控制长文本切分与返回时间戳,可使用^p进行分割(注意分割句间最好不要长于200字),此功能与句级、词级字幕时间戳功能不冲突
break int 段落间隔,取值 0-5000,单位ms,用于合成文本分段传入时设置段落间间隔。

返回说明

参数详解

参数名称 类型 是否必需 对外状态
log_id int log id
task_id str 任务id。注意保存该id,用于后续请求结果
task_status str 任务状态
error_code int 错误码,详细解释见错误码汇总
error_msg str 错误信息,详细解释见错误码汇总

二、长文本合成 - 查询任务

请求说明
package org.example;
import com.baidu.aip.speech.AipSpeech;
import org.json.JSONObject;

import java.util.Arrays;
import java.util.List;

public class LongTtsQuery {
    // 设置APPID/AK/SK
    public static final String APP_ID = "你的 App ID";
    public static final String API_KEY = "你的 Api Key";
    public static final String SECRET_KEY = "你的 Secret Key";
    public static void main(String[] args) {
        // 初始化一个AipSpeech
        AipSpeech client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);
        // 任务id集合
        // 推荐一次查询多个任务id,单次最多可查询200个
        List<String> taskIds = Arrays.asList(
                "task_id_1",
          			"task_id_2"
        );
        JSONObject res = client.longTextSynthesisQuery(taskIds);
        System.out.println(res);
    }
}
参数名称 类型 是否必需 说明
task_ids int 任务id,推荐一次查询多个任务id,单次最多可查询200个

返回说明
参数名 类型 是否必需 描述
log_id int log id
tasks_info list 任务信息
+task_id str 任务id
+task_status str 任务状态
+task_result dict 任务结果
++speech_url str 音频下载链接,任务完成后储存72小时
++speech_timestamp dict 字幕时间戳信息
+++sentences list 句子列表
++++paragraph_index int 句子在传入文本中段落位置
++++sentence_texts str 句子文本信息
++++begin_time int 句子文本在合成音频的开始时间戳
++++end_time int 句子文本在合成音频的结束时间戳
++++characters list 句子中各个词的信息
+++++character_text str 句子中的词文本
+++++begin_time int 句子中的词在合成音频的开始时间戳
+++++end_time int 句子中的词在合成音频的结束时间戳
++err_no int 错误码,详细解释见错误码汇总
++err_msg str 错误信息,详细解释见错误码汇总
++sn str
error_code int 错误码
error_msg str 错误信息
error_info list 错误的或查询不存在taskId数组
上一篇
流式文本在线合成JAVA SDK
下一篇
语音识别