更新时间:2026-02-03 GMT+08:00
分享

声音注册查询

前提条件

初始化Client

初始化vcsClient,详见表1

表1 vcsClient

参数名称

是否必选

参数类型

描述

ak

String

用户的ak,可参考AK/SK认证

sk

String

用户的sk,可参考AK/SK认证

region

String

区域,如:cn-east-3,具体请参考终端节点

project_id

String

项目ID,同region一一对应,参考获取项目ID。

service_endpoint

String

终端节点,一般使用默认即可。

请求参数(声音注册)

请求类型registerQueryRequest,详见表2

表2 registerQueryRequest

参数名称

是否必选

参数类型

描述

path

String

待注册声音路径,要求采样率不低于16k。

config

Object

详见表3

表3 Config

参数名称

是否必选

参数类型

描述

voice_name

String

注册声音的名称,不能以数字、下划线开头。仅包含大、小写英文字母、数字和下划线,且长度不超过20个字符。一个project_id下的声音名称不能重复。

language

String

data中语音数据的语种,取值“chinese”、“english”;默认是chinese。

请求参数(声音查询)

请求类型registerQueryRequest,详见表4

表4 registerQueryRequent

参数名称

是否必选

参数类型

描述

limit

Integer

查询已注册的声音列表,每页查询显示的条目数量,默认:10。

offset

Integer

查询已注册的声音列表,页码偏移量,表示从此页码偏移量开始查询,offset大于等于0, 默认:0。

响应参数(声音注册)

Java SDK响应结果为Json格式,正确响应详见表5,错误响应详见表7

表5 响应参数说明

参数名称

参数类型

描述

trace_id

String

服务内部的令牌,可用于在日志中追溯具体流程。

result

Object

注册声音响应,详见表6

表6 result数据结构

参数名称

参数类型

描述

voice_name

String

注册声音的名称。

表7 错误响应

参数名称

参数类型

描述

error_code

String

调用失败时的错误码。 调用成功时无此字段。

error_msg

String

调用失败时的错误信息。 调用成功时无此字段。

响应参数(声音查询)

Java SDK响应结果为Json格式,正确响应详见表5,错误响应详见表11

表8 响应参数说明

参数名称

参数类型

描述

trace_id

String

服务内部的令牌,可用于在日志中追溯具体流程。

result

Object

注册声音响应,详见表9

表9 result数据结构

参数名称

参数类型

描述

voices

String

注册成功的声音列表,详见表10

表10 voice结构

参数名称

参数类型

描述

voice_name

String

注册成功的声音名称。

language

String

注册成功的声音语种。

表11 错误响应

参数名称

参数类型

描述

error_code

String

调用失败时的错误码。 调用成功时无此字段。

error_msg

String

调用失败时的错误信息。 调用成功时无此字段。

请求示例

  • 说明:“endpoint”即调用API的请求地址,不同服务不同区域的“endpoint”不同,具体请参见终端节点,当前仅支持上海一。
  • 调用API,注册查询声音。
    package com.huawei.sis.demo.cn_demo;
    
    import com.huawei.sis.bean.AuthInfo;
    import com.huawei.sis.bean.SisConfig;
    import com.huawei.sis.bean.SisConstant;
    import com.huawei.sis.bean.request.RegisterVoiceRequest;
    import com.huawei.sis.bean.response.RegisterVoiceResponse;
    import com.huawei.sis.bean.response.VoicesResponse;
    import com.huawei.sis.client.VcsClient;
    import com.huawei.sis.exception.SisException;
    import com.huawei.sis.util.IOUtils;
    import com.huawei.sis.util.JsonUtils;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    /**
     * 声音复刻-声音注册和查询Demo
     * <p>
     * Copyright 2026 Huawei Technologies Co.,Ltd.
     */
    public class VcsRegisterAndRequest {
        /*
         * 1. 用户先录制一段声音,进行注册
         * 2. 录音数据,使用base64编码,大小不超过6MB。支持wav、mp3、m4a格式,采样率不小于16kHz,时长在5-25秒,支持单、双通道。
         * 2. 用户查询已经注册的声音信息(包括预置的声音)
         */
        private static final Logger log = LoggerFactory.getLogger(VcsRegisterAndRequest.class);
    
    
        // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
        private String ak = System.getenv("HUAWEICLOUD_SDK_AK");
        private String sk = System.getenv("HUAWEICLOUD_SDK_SK");
        private String region = "";    // 区域,如cn-east-3
        private String projectId = ""; // 项目id,在我的凭证查看。参考https://support.huaweicloud.com/api-sis/sis_03_0008.html
        private String serviceEndPoint = "";  // 非必选,参考终端节点
        private String path = ""; // 用户录音的声音存放位置,文件格式为wav、mp3、m4a
    
        public static void main(String[] args) {
            VcsRegisterAndRequest vcsRegisterAndRequest = new VcsRegisterAndRequest();
            vcsRegisterAndRequest.RegisterAndRequest();
        }
    
        /**
         * 定义config,所有参数可选,设置超时时间等。
         *
         * @return SisConfig
         */
        private SisConfig getConfig() {
            SisConfig config = new SisConfig();
            // 设置连接超时,默认10000ms
            config.setConnectionTimeout(SisConstant.DEFAULT_CONNECTION_TIMEOUT);
            // 设置读取超时,默认10000ms
            config.setReadTimeout(SisConstant.DEFAULT_READ_TIMEOUT);
            // 设置代理, 一定要确保代理可用才启动此设置。 代理初始化也可用不加密的代理, new ProxyHostInfo(host, port);
            // 设置代理,可参考 config.setProxy(new ProxyHostInfo(host, port, user, password));
            return config;
        }
    
        /**
         * 声音复刻-声音注册和查询Demo
         */
        private void RegisterAndRequest() {
            // 两个接口可单独运行
            registerVoice(); // 声音注册接口
            listVoice();  // 声音查询接口
        }
    
        private void registerVoice() {
            try {
    
                // 1. 初始化AuthInfo
                // 定义authInfo,根据ak,sk,region,projectId
                AuthInfo authInfo = new AuthInfo(ak, sk, region, projectId);
    
                // 设置config,主要与超时有关
                SisConfig config = getConfig();
                VcsClient vcsClient = new VcsClient(authInfo, config);
    
                // 2. 配置请求
                String data = IOUtils.getEncodeDataByPath(path);
                String voiceName = "";  // 待注册的用户声音名称, 多次使用同一个名称注册, 会报错名称重复
                String language = "chinese"; // 待注册的用户声音语种
                RegisterVoiceRequest request = new RegisterVoiceRequest(voiceName, data, language);
    
                // 3. 发送请求,获取响应。
                RegisterVoiceResponse response = vcsClient.registerVoice(request);
                log.info(JsonUtils.obj2Str(response, true));
            } catch (SisException e) {
                log.info("error_code:" + e.getErrorCode() + " error_msg:" + e.getErrorMsg());
            }
        }
    
        private VoicesResponse listVoice() {
            try {
    
                // 1. 初始化AuthInfo
                // 定义authInfo,根据ak,sk,region,projectId
                AuthInfo authInfo = new AuthInfo(ak, sk, region, projectId, serviceEndPoint);
    
                // 设置config,主要与超时有关
                SisConfig config = getConfig();
                VcsClient vcsClient = new VcsClient(authInfo, config);
    
                // 2. 发送请求,获取响应。具体结果可通过response.getXX获取, 下面取前10个音色
                VoicesResponse response = vcsClient.query(10, 0);
                log.info(JsonUtils.obj2Str(response, true));
                return response;
            } catch (SisException e) {
                log.info("error_code:" + e.getErrorCode() + " error_msg:" + e.getErrorMsg());
                return null;
            }
        }
    }

响应示例

状态码:200

成功响应示例(注册声音)

{ 
   "trace_id": "567e8537-a89c-13c3-a882-826321939651", 
   "result":{ 
     "voice_name": "test_xiaoming"
   } 
 } 

状态码:200

成功响应示例(查询声音)

{ 
   "trace_id": "567e8537-a89c-13c3-a882-826321939651", 
   "result":{ 
     "voices": [
        {
          "voice_name": "test_xiaoming",
          "language": "chinese"
        }
   } 
 }

状态码:400

失败响应示例(注册查询声音)

{  
    "error_code": "SIS.***",  
    "error_msg": "***"          
} 

相关文档