[Unity+OpenAI TTS] 集成openAI官方提供的语音合成服务,构建海王暖男数字人

本文主要是介绍[Unity+OpenAI TTS] 集成openAI官方提供的语音合成服务,构建海王暖男数字人,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.简述

        最近openAI官方发布了很多新功能,其中就包括了最新发布的TTS语音合成服务的api接口。说到这个语音合成接口,大家可能会比较陌生,但是说到chatgpt官方应用上的聊天机器人,那个台湾腔的海王暖男的声音,可能就有印象了吧。那么从官方文档中,可以发现,openAI提供的TTS服务中,就包含了这个声音可选。经过我的实测发现,openAI的语音合成效果相当的出色,在语气、断句等方面有非常好的表现,所以很值得将这个语音合成服务集成到我的AI二次元项目工具包里,为水友们提供更多的选择。

2.API接口说明

       1)语音合成模型

        根据官方文档的说明,open AI的语音合成服务提供了两种合成质量的模型

        可选模型包括:tts-1以及tts-1-hd两种,其中tts-1-hd的模型,合成出来的声音质量更高,但是需要注意的是,hd模型的价格会更高,

       2)声音选择

        在可选声音方面,官方提供了六种可选的声音,在调用语音合成API时,在发送的报文中设置选择的声音即可。

        3)API报文格式

        根据官方提供的示例,可知道语音合成的api地址及为:

     https://api.openai.com/v1/audio/speechicon-default.png?t=N7T8https://api.openai.com/v1/audio/speech        报文结构中,需要发送带有model、input以及voice为关键字的json字符串。

curl https://api.openai.com/v1/audio/speech \-H "Authorization: Bearer $OPENAI_API_KEY" \-H "Content-Type: application/json" \-d '{"model": "tts-1","input": "Today is a wonderful day to build something people love!","voice": "alloy"}' \--output speech.mp3

3.示例代码

        unity端调用open AI的语音合成api的示例代码如下:

     [SerializeField] private string api_key=string.Empty;//apikey[SerializeField] private ModelType m_ModelType = ModelType.tts_1;//模型[SerializeField] private VoiceType m_Voice = VoiceType.onyx;//声音[SerializeField] private string m_PostURL = string.Empty; private void Awake(){m_PostURL = "https://api.openai.com/v1/audio/speech";}private IEnumerator GetVoice(string _msg, Action<AudioClip, string> _callback){using (UnityWebRequest request = UnityWebRequest.Post(m_PostURL, new WWWForm())){PostData _postData = new PostData{model = m_ModelType.ToString().Replace('_','-'),input = _msg,voice= m_Voice.ToString()};string _jsonText = JsonUtility.ToJson(_postData).Trim();byte[] data = System.Text.Encoding.UTF8.GetBytes(_jsonText);request.uploadHandler = (UploadHandler)new UploadHandlerRaw(data);request.downloadHandler = new DownloadHandlerAudioClip(m_PostURL, AudioType.MPEG);request.SetRequestHeader("Content-Type", "application/json");request.SetRequestHeader("Authorization", string.Format("Bearer {0}", api_key));yield return request.SendWebRequest();if (request.responseCode == 200){AudioClip audioClip = ((DownloadHandlerAudioClip)request.downloadHandler).audioClip;_callback(audioClip, _msg);}else{Debug.LogError("语音合成失败: " + request.error);}}}#region 数据定义/// <summary>/// 发送的报文/// </summary>[Serializable]public class PostData{public string model = string.Empty;//模型名称public string input = string.Empty;//文本内容public string voice = string.Empty;//声音}/// <summary>/// 模型类型/// </summary>public enum ModelType{tts_1,tts_1_hd}/// <summary>/// 声音类型/// </summary>public enum VoiceType{alloy,echo,fable,onyx,nova,shimmer}#endregion

4. Unity端数字人配置

        项目的源码已经发布到Github了,我们可以直接下载,并导入到unity中使用,要求unity版本在2020.3.44及以上。导入工具包之后,可以在Scene文件夹下,找到示例场景,在场景中找到TTS->openAI对象,该对象上就维护了openAI提供的语音合成服务的代码。

        使用这个模块,首先我们需要注册一个openAI账号,并创建一个api key,将apikey填写到脚本对应的apikey属性上。然后将TTS脚本配置到chatAgent脚本上即可。

        详细配置,可以到我的B站主页,查看本期视频的配置过程。

5.结束语  

        这次的文章简单介绍了如何使用open AI官方提供的语音合成服务api,实现高质量的语音合成功能,让我们的数字人具备情感丰富,语气逼真的语音效果。文章所涉及的项目配置过程,可以到B站查看详细配置过程。

[Unity+openAI TTS] chatgpt海王暖男,分分钟搞定,使用openAI官方语音合成服务,打造火热暖心数字人


项目地址传送门:

AI二次元老婆开源项目(unity-AI-Chat-Toolkit):

Github地址:https://github.com/zhangliwei7758/unity-AI-Chat-Toolkit

Gitee地址:https://gitee.com/DammonSpace/unity-ai-chat-toolkit

这篇关于[Unity+OpenAI TTS] 集成openAI官方提供的语音合成服务,构建海王暖男数字人的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/415659

相关文章

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

Spring Boot 集成 mybatis核心机制

《SpringBoot集成mybatis核心机制》这篇文章给大家介绍SpringBoot集成mybatis核心机制,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值... 目录Spring Boot浅析1.依赖管理(Starter POMs)2.自动配置(AutoConfigu

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环

nacos服务无法注册到nacos服务中心问题及解决

《nacos服务无法注册到nacos服务中心问题及解决》本文详细描述了在Linux服务器上使用Tomcat启动Java程序时,服务无法注册到Nacos的排查过程,通过一系列排查步骤,发现问题出在Tom... 目录简介依赖异常情况排查断点调试原因解决NacosRegisterOnWar结果总结简介1、程序在

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

springBoot (springCloud2025)集成redisCluster 集群的操作方法

《springBoot(springCloud2025)集成redisCluster集群的操作方法》文章介绍了如何使用SpringBoot集成RedisCluster集群,并详细说明了pom.xm... 目录pom.XMLapplication.yamlcluster配置类其他配置类连接池配置类Redis

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

SpringBoot集成WebService(wsdl)实践

《SpringBoot集成WebService(wsdl)实践》文章介绍了SpringBoot项目中通过缓存IWebService接口实现类的泛型入参类型,减少反射调用提升性能的实现方案,包含依赖配置... 目录pom.XML创建入口ApplicationContextUtils.JavaJacksonUt