使用微软云人工智能,合成带感情的语音

以前公司下达了一个需求,要求用语音做广播,因为广播里面包含姓名,所以不能难以直接录制,需要使用合成语音。

一开始考虑到时间以及优先级问题,这边使用了百度的合成语音。

但是百度语音相对僵硬,而且没有感情,效果不甚满意。

不久前时间相对充沛,这边就使用了觉得最完美的方案——使用微软云的人工智能合成语音。

因为这个语音可以设置感情,没有机器合成那种僵硬的感觉,可以说是比真人还真人。

微软云合成语音demo网站:https://azure.microsoft.com/zh-cn/services/cognitive-services/text-to-speech/

感觉确实有需要的话,接下来就应该创建微软云账号,开始使用了,可以参考这个视频:https://www.bilibili.com/video/av670457802

不过要注意一点,创建微软云账号,需要绑定一张visa卡。如果没有的话,可以淘宝或者申请微软云学生账号。

申请微软云学生账号:https://www.daniao.org/6693.html

创建好微软云合成语音服务之后,就可以直接使用了。

文档地址:https://docs.microsoft.com/zh-cn/azure/cognitive-services/speech-service/get-started-text-to-speech?tabs=script%2Cwindowsinstall&pivots=programming-language-javascript

收费:在这里插入图片描述
每个月都有25万字的合成额度,如果需求量不大的话,已经够用了。如果需求量大,可以将通用的语音保存到服务器,将不通用项,如姓名,以单字的形式,请求后再存入服务器。每次访问时,先检查服务器存不存在这个字,如没有再请求api接口。

下面是简单使用的具体代码:

微软语音合成(人工智能)示例
	<script type="text/javascript">const sdk = SpeechSDKvar synthesizer = null;/*** 初始化微软语音*/function synthesizeMsSpeech() {const speechConfig = sdk.SpeechConfig.fromSubscription("你的密匙", "你的地区,如 eastus 不能输入中文");synthesizer = new sdk.SpeechSynthesizer(speechConfig);}/*** 使用微软语音说话* @param {Object} word*/function msSpeek(text) {//微软人工智能语音,需要使用xml字符串做配置let ssml = `<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US"><voice name="zh-cn-XiaoxiaoNeural"><mstts:express-as style="cheerful">${text}</mstts:express-as></voice></speak>`synthesizer.speakSsmlAsync(ssml,result => {if (result.errorDetails) {console.error(result.errorDetails);} else {// console.log(JSON.stringify(result));}synthesizer.close();},error => {console.log(error);synthesizer.close();});}synthesizeMsSpeech();msSpeek("你好,我是你的优乐美!")</script>
</body>

密匙就不解释了,微软云控制台可以看到,地区可以选eastus eastus2,以及另外几个, 具体看控制台上显示的地区

另外为方便理解,附带一个带界面的语音合成网页:


欢快 闲聊 冷静 生气 紧张 哭泣 轻蔑 严肃 亲切 温和 伤感 客服 数字助理 新闻
		</select><br><br><button type="button" onclick="clickPlayBtn()">播放</button><button type="button" onclick="clickDownBtn()">下载</button></div><!-- 去除语音直接播放的sdk。在sdi.min.js,搜索play(),去除第二个play,这样不会输入到流的时候,依然先自动播放语音,形成干扰 --><script src="static/js/microsoft.speech.sdk.1.js"></script><script type="text/javascript">const sdk = SpeechSDKvar synthesizer = null;//还有很多种const STYLE = {cheerful: "cheerful", //欢快chat: "chat", //闲聊calm: "calm", //冷静angry: "angry", //生气fearful: "fearful" //紧张}/*** 初始化微软语音*/function synthesizeMsSpeech() {const speechConfig = sdk.SpeechConfig.fromSubscription("你的微软云密匙", "你的地区,如eastus");synthesizer = new sdk.SpeechSynthesizer(speechConfig);}/*** 请求微软语音* @param {Object} text*/function requestMsAudio(text, style="cheerful") {return new Promise((resolve, reject) => {let xmlObj = `<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US"><voice name="zh-cn-XiaoxiaoNeural"><mstts:express-as style="${style}">${text}</mstts:express-as></voice></speak>`const ssml = xmlObj;synthesizer.speakSsmlAsync(ssml,result => {// synthesizer.close();  //关闭后,会只获取一轮if (result.errorDetails) {console.error(result.errorDetails);reject(result)} else {let arrayBuffer = result.audioDatalet blob = new Blob([arrayBuffer], {type: 'autio/wave'});var src = URL.createObjectURL(blob);resolve(src)}},error => {console.log(error);reject(error)// synthesizer.close();});})}/*** 使用微软语音说话* @param {Object} text*/function msSpeek(text, style="cheerful") {return new Promise((resolve, reject) => {requestMsAudio(text, style).then((src) => {var mp3 = new Audio(src);//播放完之后,执行事件mp3.addEventListener("ended", () => {resolve();})mp3.play().catch(playError); //播放语音});})}/*** 合并播放,先播放完一个,再播放另一个* @param {Object} src 资源链接* @param {Object} text 要生成的文字*/function mergeSpeek(src, text, style="cheerful"){return new Promise((resolve, reject) => {requestMsAudio(text, style).then((msSrc) => {playAudio(src).then(()=>{var mp3 = new Audio(msSrc);//播放完之后,执行事件mp3.addEventListener("ended", () => {resolve();})mp3.play().catch(playError); //播放语音})});})}/*** 下载微软语音* @param {Object} text*/function msDownload(text, style) {return new Promise((resolve, reject) => {requestMsAudio(text, style).then((src) => {const pattern=/[`~!@#$^&*()=|{}':;',\\\[\]\.<>\/?~!@#¥……&*()——|{}【】';:""'。,、?\s]/g;let name = text.replace(pattern," ");_download(src, name +".wav")});})};/*** 播放音频,then为播放完后的回调* @param {Object} src*/function playAudio(src) {return new Promise((resolve, reject) => {var mp3 = new Audio(src);//播放完之后,执行事件mp3.addEventListener("ended", () => {resolve();})mp3.play().catch(playError); //播放语音})}/*** 播放失败后的统一回调*/const playError = function(){console.error("播放失败,播放前,请先点击页面,以允许播放。")}// 下载function _download(src, filename) {var eleLink = document.createElement('a');eleLink.download = filename;eleLink.style.display = 'none';// 字符内容转变成blob地址 eleLink.href = src;// 自动触发点击 document.body.appendChild(eleLink);eleLink.click();// 然后移除 document.body.removeChild(eleLink);};synthesizeMsSpeech();/*** 点击下载后触发*/function clickPlayBtn(){let text = document.getElementById("mainTxt").value;let style = document.getElementById("style").valueif(text.length > 0){msSpeek(text, style)}}/*** 点击下载后触发*/function clickDownBtn(){let text = document.getElementById("mainTxt").value;let style = document.getElementById("style").valueif(text.length > 0){msDownload(text, style)}}</script>
</body>

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity关于Oculus Quest2 入门开发:(三)基于XR Interaction Toolkit0.10.0开发交互功能之传送篇

说书人&#xff1a;“古语云&#xff1a;千里之行始于足下。“跑”&#xff0c;至关重要啊&#xff01;…" 路人甲&#xff1a;“呵呵…” 皮一下很开心&#xff0c;哈哈&#xff0c;勿笑勿笑。。。 今天我们谈谈”跑“&#xff0c;无论是HTC Vive还是Oculus&#xff0c…

unity +vive(设备)+steam vr(软件)(第二天)

开始新的冒险&#xff01; 我们这里还是选择使用3D模板就行。。&#xff08;这里要注意项目名称&#xff0c;最好是英文&#xff0c;用中文可能后面代码会报错。。&#xff09; 咱们先下载这个包然后导入&#xff0c;全选&#xff0c;导入 然后你就会能到你的unity弹出这三个…

【实战分享2】:如何基于OpenXR@ unity + 华为VR Glass 6dof Quest 开发跨平台VR游戏/应用

在上一篇中《【实战分享1】如何使用华为VR Glass 6dof 基于 OpenXR unity 开发VR游戏》最后小结中提到&#xff0c;基于openxr可以支持一套代码&#xff0c;达到跨平台部署&#xff1a; 使用openxr标准&#xff0c;无需在场景或者XR RIG上做任何的改动&#xff0c;可以跨平台&…

华为入局 VR 眼镜能让 VR 早普及几年?|CSDN博文精选

作者 | 小谦笔记 责编 | 刘静 出品 | CSDN博客 早在15、16年&#xff0c;VR、AR概念最先兴起的那会儿&#xff0c;还没有体验过VR的我&#xff0c;以为好莱坞大片里面那种“空中屏幕控制”的科技即将到来&#xff0c;只需要按一按眼镜&#xff0c;面前就会出现一个屏幕&#xf…

VR眼镜连接android设备,华为VR眼镜和电脑如何连接 投屏软件PCVR Assistant 2.0使用教程...

HUAWEI VR Glass如何连接电脑?HUAWEI VR Glass在电脑上如何使用?华为投屏软件PCVR Assistant 2.0如何使用?华为VR眼镜主打轻薄,能调节近视,支持联动多种设备,除了可以手机投屏外,还能使用投屏软件PCVR Assistant 2.0在电脑上轻松操作。下面来看看电脑上如何使用PCVR Ass…

我参加 NVIDIA Sky Hackathon---语音识别+前端设计

一、语音识别 针对项目中要求识别的果皮&#xff0c;瓶子&#xff0c;纸箱这些物品我们选择采集以下文字对应的语音数据&#xff1a; 请检测出果皮 请检测出纸箱 请检测出瓶子 请检测出果皮和纸箱 请检测出纸箱和瓶子 请检测出果皮和瓶子 请检测出纸箱、果皮和瓶子 1.语…

VR开发者如何把Oculus Quest中的录制视频导出

最近在开发Oculus上的一个APP&#xff0c;在向上级汇报的时候&#xff0c;录制了一段视频&#xff0c;那怎样把这段视频导出到个人的PC上呢? 之前用过Android Studio开发过手机的APP&#xff0c;之前可以在Android Studio上之间看到整个手机的目录。Oculus也是Android的系统&…

【资源】Oculus meta Quest 2游戏下载VR一体机游戏资源合集下载教程Pro

meta Oculus Quest2的VR一体机已经发布有一段时间了&#xff0c;虽然后起之秀的VR一体机设备陆续也发布&#xff0c;尤其是近期pico4的发布&#xff0c;但是不可否认&#xff0c;Quest2至今依然是VR一体机设备的生态之王&#xff0c;丰富的VR游戏和应用资源是其他设备望尘莫及的…

《基于Qt的VR编辑器开发》(Yanlz+Unity+SteamVR+5G+AI+VR云游戏+Qt+编辑器+跨平台+人机交互+触发事件+立钻哥哥+==)

《基于Qt的VR编辑器开发》 《基于Qt的VR编辑器开发》 版本 作者 参与者 完成日期 备注 YanlzFramework_Qt_V01_1.0 严立钻 2019.09.04 ##《基于Qt的VR编辑器开发》发布说明&#xff1a; “基于Qt的VR编辑器开发”&#xff1a;是对“Qt”的了解拓…

基于UnityXR 开发 Oculus Quest VR应用------的前期工作

开发oculus quest vr应用有两种方式&#xff1a; 1、基于unity xr toolkit 开发 2、直接接入oculus 原生sdk开发 方式1&#xff1a;使用untiy xr开发&#xff0c;项目会更好维护一些&#xff0c;用的api也都是unity xr那一套&#xff0c;可直接上手开发。 方式2&#xff1a;现成…

如何使用Oculus Quest学习SteamVR开发

在与学员朋友们的交流过程中&#xff0c;越来越多的朋友在报名之前会询问这样一个问题&#xff1a;现在并没有HTC VIVE&#xff0c;手头上只有一个Oculus Quest1/2&#xff0c;能不能报名学习课时或者是自行进行steam VR的开发&#xff1f;本文将介绍关于这方面的内容。. 先上结…

unity +vive(设备)+steam vr(软件)(第一天)

废话不多说&#xff0c;直接开始&#xff01; 首先是设备&#xff01; 下载我们最爱的steam&#xff01;&#xff01;&#xff01; 同时下载一下一个叫steam VR的一个工具 主要我们就有了基本游玩vr的工具。 vr眼镜我用的是学校提供的HTC vive家的设备 unity版本是2020.3.2…

VR联机体验破圈难?VRChat进军移动端分析

4年前&#xff0c;VR社交应用Rec Room为了扩大用户群体&#xff0c;宣布进军iOS移动生态&#xff0c;随后又陆续登陆了PlayStation、Xbox、安卓等主流的非VR硬件平台。而近期&#xff0c;另一款经典VR社交应用VRChat也宣布将支持安卓移动平台。毫无疑问&#xff0c;跨设备对于社…

Win10系统中用Unity进行Oculus quest 2 VR开发的测试与打包

具体打包的整个流程可以参考文章&#xff1a; 如果是将apk文件打包在电脑上需要通过adb这个命令行工具进行安装,安装方式比较简单&#xff0c; 1、去官网下载适用于 Windows 的 SDK Platform-Tools 2、下载安装后配置环境变量 # 比如我的安装位置是 E:\software\install\ADB…

vrchat新手教程_VRChat入门指南| 最新电脑资讯

您知道电脑硬盘是如何读取和存储数据的吗&#xff1f;恢复软件是如何找回数据的吗&#xff1f;通过这个视频教程&#xff0c;你将了解你丢失的数据是否还在&#xff0c;这些文件能否找回。 请点击 - 》》》》 观看视频 如何安全找回丢失数据的方法 1. 下载并安装B计划数据恢复软…

分享一种虚拟现实显示的思路,多面曲面显示非头戴VR

⑴技术领域 本文主要涉及三维虚拟空间的三维坐标转换到二维平面显示时二维坐标变换关系&#xff0c;具体属于计算机图形领域。 ............................................................................................................. ⑵引出技术点 目前的显示方…

0基础学习VR全景平台篇 第57篇:高级功能-多语言

功能位置示意 一、本功能将用在哪里&#xff1f; 多语言功能&#xff0c;可一键设置作品界面语言为中/英文&#xff0c;或跟随系统自动切换中/英文&#xff0c;各位可以用户可以轻松制作英文版VR全景作品&#xff0c;满足国外用户访问的需求。 此外蛙色VR平台&#xff0c;可通…

小白初窥VR世界的通行证?浅聊 PCVR 串流软件 Virtual Desktop - VR与串流篇 上

什么是Virtual Desktop&#xff1f; Virtual Desktop (以下简称VD)是一款VR串流软件&#xff0c;其通过局域网低延迟、高质量的流式传输将PC端的界面同步到用户的VR头显中&#xff0c;给用户带来舒适且愉快的VR体验&#xff0c;是VR头显串流PCVR的重要助手。 VD作为VR玩家几乎人…

Unity接入百度语音识别SDK windows平台

1.先注册百度开放平台的账号&#xff0c;然后按文档申请试用资格及创建应用&#xff1a;https://ai.baidu.com/ai-doc/SPEECH/qknh9i8ed Windows平台选择“不需要”就可以了。 2.下载C# SDK包 解压以后里面包含这两个文件夹&#xff0c;我工程里面用的是net45&#xff0c;将文…

(每日更新)《虚拟现实VR资讯》(Yanlz+Unity+SteamVR+云技术+5G+AI=VR云游戏=云渲染+人机交互+立钻哥哥+==)

虚拟现实&#xff08;Virtual Reality&#xff09; 虚拟现实简称VR&#xff0c;是一种可以创建和体验虚拟世界的计算机仿真系统&#xff0c;它利用计算机生成一种模拟环境&#xff0c;是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中。 …