阿里云声音复刻

news2024/10/7 4:33:06

阿里云声音复刻

个性化人声定制

阿里云个性化人声定制是智能语音交互产品自学习平台下的一部分

使用方式:https://help.aliyun.com/document_detail/456006.html

image

  • 方式一:控制台界面定制使用方式

  • 方式二:通过OpenAPI定制:在该页面有不同开发语言的示例代码,开发者使用openAPI概览注意只有四个API方法和声音克隆的API方法有所不同

Java示例代码

package com.alibaba.nls.ptts;

import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.http.ProtocolType;
import com.aliyuncs.profile.DefaultProfile;

public class PttsDemo {
    //域名
    private static final String DOMAIN = "nls-measure.cn-shanghai.aliyuncs.com";
    // API版本
    private static final String API_VERSION = "2019-09-05";

    private static IAcsClient client;

    static {
        String accessKeyId = "请替换为您自己的accessKeyId";
        String accessKeySecret = "请替换为您自己的accessKeySecret";
        // 创建DefaultAcsClient实例并初始化
        DefaultProfile profile = DefaultProfile.getProfile(
            "",
            accessKeyId,
            accessKeySecret);
        client = new DefaultAcsClient(profile);
    }

    public static void main(String[] args) throws InterruptedException {
        //20句音频,此处为了方便演示接口的调用,提前准备好了音频的url,在您集成时,可以在用户录制的过程中,将音频进行存储
        String[] urls = {"viwf/1.wav", "dycw/2.wav", "dopl/3.wav", "anfd/4.wav", "cyoy/5.wav", "dsjw/6.wav",
            "vevd/7.wav", "ulno/8.wav", "kwlw/9.wav", "lafu/10.wav", "uozh/11.wav", "gdpp/12.wav", "lisa/13.wav",
            "bmvv/14.wav", "ijzx/15.wav", "kdla/16.wav", "govf/17.wav", "kcid/18.wav", "srdx/19.wav", "stol/20.wav"};

        //训练的基本信息,voiceName请替换成您自己的命名
        String voiceName = "示例voice";
        String scenario = "story";
        String gender = "female";

        //Step1: 获取需要朗读的文本
        CommonRequest getDemonstrationRequest = buildRequest("GetDemonstrationForCustomizedVoice");
        getDemonstrationRequest.putQueryParameter("Scenario", scenario);
        String getDemonstrationResponse = sendRequest(getDemonstrationRequest);
        System.out.println("|获取需要朗读的内容|response=" + getDemonstrationResponse);

        //Step2: 采集用户朗读的音频,进行音频检测
        for (int i = 1; i <= 20; i++) {
            String audioUrl = audioRecordUrlPrefix + urls[i - 1];
            CommonRequest audioDetectRequest = buildRequest("CustomizedVoiceAudioDetect");
            audioDetectRequest.putQueryParameter("Scenario", scenario);
            audioDetectRequest.putQueryParameter("VoiceName", voiceName);
            audioDetectRequest.putQueryParameter("RecordUrl", audioUrl);
            audioDetectRequest.putQueryParameter("AudioRecordId", String.valueOf(i));
            String audioDetectResponse = sendRequest(audioDetectRequest);
            System.out.println("|音频检测|[" + i + "]response=" + audioDetectResponse);
        }

        //Step3: 20句音频检测完成后,提交训练
        CommonRequest submitTrainRequest = buildRequest("SubmitCustomizedVoice");
        submitTrainRequest.putQueryParameter("VoiceName", voiceName);
        submitTrainRequest.putQueryParameter("Gender", gender);
        submitTrainRequest.putQueryParameter("Scenario", scenario);

        String submitTrainResponse = sendRequest(submitTrainRequest);
        System.out.println("|提交训练|response=" + submitTrainResponse);

        //Step4: 轮询训练结果

        CommonRequest queryTrainResultRequest = buildRequest("ListCustomizedVoice");
        queryTrainResultRequest.putQueryParameter("VoiceName", voiceName);
        String queryTrainResultResponse = sendRequest(queryTrainResultRequest);
        System.out.println("|查询训练结果|response=" + queryTrainResultResponse);
    }

    private static String audioRecordUrlPrefix
        = "https://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/file-manage-files/zh-CN/20221118/";

    private static CommonRequest buildRequest(String popApiName) {
        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain(DOMAIN);
        request.setSysVersion(API_VERSION);
        request.setSysAction(popApiName);
        request.setSysProtocol(ProtocolType.HTTPS);
        return request;
    }

    private static String sendRequest(CommonRequest request) {
        try {
            CommonResponse response = client.getCommonResponse(request);
            return response.getData();
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
        return null;
    }
}

阿里云个人化人声定制控制台

https://nls-portal.console.aliyun.com/pttssettingnew

非开发者使用指南:

https://help.aliyun.com/document_detail/451766.html?spm=a2c4g.432038.0.0.496f4906w8EQFD

声音克隆定制

阿里云产品帮助中心搜索声音克隆https://help.aliyun.com/?spm=a2c4g.456006.J_3207526240.2.6a5842e8QI7zZj

方法一:通过控制台进行人声克隆

  1. 登录智能媒体服务控制台。
  2. 在顶部左上角根据实际情况选择地域。
  3. 在左侧导航栏选择****智能生产制作** > *人声克隆***。
  4. 单击定制声音,根据提示完成定制人声操作。

方法二:通过OpenAPI进行人声克隆

  1. 调用接口CreateCustomizedVoiceJob,配置参数VoiceId,创建人声克隆任务。

  2. 调用接口GetDemonstrationForCustomizedVoiceJob,根据实际场景配置参数Scenario,获取需要朗读的20条示范文本及音频。

  3. 根据步骤 2获取到的示范文本及音频进行训练并录制,并将录制的语音上传至OSS。上传方式,请参见上传文件。

  4. 调用接口DetectAudioForCustomizedVoiceJob,提交已经训练好的音频,进行音频检测。

    重要 需要调用20次该接口,每次调用时提交对应的音频,共20条音频。

  5. 调用接口SubmitCustomizedVoiceJob,提交人声克隆训练任务,系统开始进行语音训练。

API参考

人声克隆相关接口

openApI门户:https://next.api.aliyun.com/api/ICE/2020-11-09/CreateCustomizedVoiceJob?tab=DEMO&lang=JAVA

SDK开发包使用方法:https://help.aliyun.com/document_detail/262200.html?spm=a2c4g.378655.0.0.534f5068p0WEYq

在这里插入图片描述

运行实例注意区分SDK版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/771476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务保护——Sentinel【实战篇】

一、限流规则&#x1f349; 1.簇点链路&#x1f95d; 簇点链路&#xff1a;就是项目内的调用链路&#xff0c;链路中被监控的每个接口就是一个资源。默认情况下sentinel会监控SpringMVC的每一个端点&#xff08;Endpoint&#xff09;&#xff0c;因此SpringMVC的每一个端点&a…

CS162 11-12 调度与死锁

调度 overview 1.FCFS 可以利用好cache缓存&#xff0c;减少上下文切换。 2.很直观&#xff0c;贪心&#xff0c;可以减少平均的响应时间 3 4. 5.等待调度的时间是平均的 6.优先级翻转&#xff0c;和优先级捐赠 解决 cfs中的调度 死锁 四个必要不充分条件 银行家算法&…

基于 ChatGPT 的 helm 入门

1. 写在最前面 公司最近在推业务上云&#xff08;底层为 k8s 管理&#xff09;&#xff0c;平台侧为了简化业务侧部署的复杂度&#xff0c;基于 helm 、chart 等提供了一个发布平台。 发布平台的使用使业务侧在不了解 helm 、chart 等工具的时候&#xff0c;「只要点点」就可…

初识protobuf

Protobuf 全称Protocol Buffers&#xff08;协议缓冲区&#xff09;&#xff0c;是一种轻量级、高效的数据序列化格式&#xff0c;由Google开发。它被设计用于结构化数据的序列化、反序列化以及数据交换&#xff0c;常用于网络通信和数据存储等领域。 Protobuf使用简洁的消息描…

【实战技能】基于硬件垂直消隐的多缓冲技术在LVGL, emWin,GUIX和TouchGFX应用,含视频教程

原贴地址&#xff1a;https://www.armbbs.cn/forum.php?modviewthread&tid120114 这两天研究了下LVGL的持单缓冲&#xff0c;双缓冲和配合硬件消隐的双缓冲的实现&#xff08;已经分享V5&#xff0c;V6和V7开发板的程序模板&#xff09;&#xff0c;特别是这个整屏缓冲方…

DB-Engines排名公布 GBASE南大通用入围国产数据库TOP 3

什么是DB-Engines排名&#xff1f; DB-Engines排名是数据库领域的流行度榜单&#xff0c;它对全球范围内的419款数据库&#xff08;截至2023年7月&#xff09;进行排名&#xff0c;每月更新一次&#xff0c;排名越靠前&#xff0c;则表示越流行。在很多技术选型的场合&#xf…

Kubernetes——CKA证书

拿到CKA证书啦&#xff0c;打算近期再准备一下备考的学习笔记以及备考经验&#xff0c;有需要的朋友可以点赞加关注&#xff0c;我会持续更新&#xff0c;您的一个赞就能给我一份整理笔记的动力&#xff01;&#x1f92d;

掘金量化—Python SDK文档—5.API 介绍(1)

​ Python SDK文档 5.API 介绍 5.1基本函数 init - 初始化策略 初始化策略, 策略启动时自动执行。可以在这里初始化策略配置参数。 函数原型&#xff1a; init(context)参数&#xff1a; 参数名类型说明contextcontext上下文&#xff0c;全局变量可存储在这里 示例&…

vue2watch监听遇到的问题

1 vue 父组件里引入子组件 显示与隐藏是v-if控制时 父传入子的参数通过watch 监听请求接口时 watch 时而监听不到 请求接口的参数就不对 如图 父组件这么引入子组件v-show 和v-if 是有区别的 2 子组件通过watch 监听后 清空页面要展示的列表数据 重新从第一页加载数据&#x…

程序员如何准备技术面试

程序员如何准备技术面试 &#x1f607;博主简介&#xff1a;我是一名正在攻读研究生学位的人工智能专业学生&#xff0c;我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任何问题或困惑&#xff0c;欢迎随时来交流哦&#xff01;&#x1f604; ✨座右…

Redis常见须知

介绍一下redis数据库 Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 String(字符…

【后端面经-Java】JVM垃圾回收机制

【后端面经-Java】JVM垃圾回收机制 1. Where&#xff1a;回收哪里的东西&#xff1f;——JVM内存分配2. Which&#xff1a;内存对象中谁会被回收&#xff1f;——GC分代思想2.1 年轻代/老年代/永久代2.2 内存细分 3. When&#xff1a;什么时候回收垃圾&#xff1f;——GC触发条…

【汉诺塔问题分析】

一、背景 汉诺塔问题是一种经典的递归问题&#xff0c;它由法国数学家Huygens在1665年发现&#xff0c;也是一道有趣的数学难题。这道问题的主要目的是将三根柱子上的一堆盘子移动到另一根柱子上&#xff0c;移动过程中每次只能移动一个盘子&#xff0c;并且大盘子不能放在小盘…

【LeetCode热题100】打卡第40天:翻转二叉树回文链表

文章目录 【LeetCode热题100】打卡第40天&#xff1a;翻转二叉树&回文链表⛅前言 翻转二叉树&#x1f512;题目&#x1f511;题解 回文链表&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第40天&#xff1a;翻转二叉树&回文链表 ⛅前言 大家好&#xff…

高数-第一章-函数-极限 连续

目录 第一章 函数 极限 连续第一节 函数第二节 极限一、极限的概念与性质&#xff08;1&#xff09;数列的极限例1例2 &#xff08;2&#xff09;函数的极限&#xff08;3&#xff09;极限的性质&#xff08;保号性重点 有界性&#xff09;例12例13例14 &#xff08;4&#xff…

Python 3 拷贝、浅拷贝、直接引用

诸神缄默不语-个人CSDN博文目录 复杂的以后再补。 总的来说&#xff0c;像常数、字符串这种比较简单的变量无所谓&#xff0c;但是对于一些复杂对象&#xff08;比如list等&#xff09;&#xff0c;如果直接使ba&#xff0c;相当于直接把a的路径给了b&#xff0c;b这个对象的…

stb_image简单使用

简介stb_image stb_image 是一个非常轻量级的、单文件的图像加载库&#xff0c;用于加载和解码多种图像格式&#xff08;如BMP、JPEG、PNG、GIF等&#xff09;的图像数据。它由Sean T. Barrett开发&#xff0c;并以公共领域&#xff08;Public Domain&#xff09;许可发布&…

【软件测试】web测试bug定位思路总结,“我“不再背锅...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 需要掌握的知识 …

LabVIEW - 采集声音并保存 wav 文件

1. 题目 编写程序&#xff0c;实现用户点击按钮时&#xff0c;采集声音&#xff0c;显示声音波形&#xff0c;对于采集的声音进行低频段、中频段、高频段分别进行适当的比例放大或者衰减&#xff0c;然后重新合成(三段相加即可)&#xff0c;并将合成的声音下入wav格式的文件保存…

【ROS】ROS1人机界面开发:第一个最简ROS+QtGui程序(按钮启动发布者)

【ROS】郭老二博文之:ROS目录 1、创建工程 1)新建工程:Other Project --> ROS Workspace 2)设置工程名称、路径 3)可以通过点击“Browse”来创建目录 注意:使用自带ros插件的qtcreator-ros,无法创建目录、也不能选择目录,这是个bug,因此需要在终端手动创建目录…