[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

相关文章

Nginx进行平滑升级的实战指南(不中断服务版本更新)

《Nginx进行平滑升级的实战指南(不中断服务版本更新)》Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升... 目录一.下载并编译新版Nginx1.下载解压2.编译二.替换可执行文件,并平滑升级1.替换可执行文件

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

SpringBoot集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor

SpringBoot集成EasyPoi实现Excel模板导出成PDF文件

《SpringBoot集成EasyPoi实现Excel模板导出成PDF文件》在日常工作中,我们经常需要将数据导出成Excel表格或PDF文件,本文将介绍如何在SpringBoot项目中集成EasyPo... 目录前言摘要简介源代码解析应用场景案例优缺点分析类代码方法介绍测试用例小结前言在日常工作中,我们经

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核