Unity使用sherpa-onnx实现离线语音合成

sherpa-onnx https://github.com/k2-fsa/sherpa-onnx
相关dll和lib库拷进Unity,官方示例代码稍作修改
在这里插入图片描述

using SherpaOnnx;
using System;
using System.IO;
using System.Runtime.InteropServices;
using UnityEngine;

public class TTS : MonoBehaviour
{
    public string Model = "vits-zh-aishell3/vits-aishell3.onnx";
    public string Lexicon = "vits-zh-aishell3/lexicon.txt";
    public string Tokens = "vits-zh-aishell3/tokens.txt";
    public string DataDir = "";
    public string DictDir = "";
    public string RuleFsts = "vits-zh-aishell3/rule.far";
    public int SpeakerId = 99;

    // Start is called before the first frame update
    void Start()
    {
        try
        {
            OfflineTtsConfig config = new OfflineTtsConfig();
            config.Model.Vits.Model = Path.Combine(Application.streamingAssetsPath, Model);
            config.Model.Vits.Lexicon = Path.Combine(Application.streamingAssetsPath, Lexicon);
            config.Model.Vits.Tokens = Path.Combine(Application.streamingAssetsPath, Tokens);
            //config.Model.Vits.DataDir = Path.Combine(Application.streamingAssetsPath, DataDir);
            //config.Model.Vits.DictDir = Path.Combine(Application.streamingAssetsPath, DictDir);
            config.Model.Vits.NoiseScale = 0.667f;
            config.Model.Vits.NoiseScaleW = 0.8f;
            config.Model.Vits.LengthScale = 1f;
            config.Model.NumThreads = 1;
            config.Model.Debug = 0;
            config.Model.Provider = "cpu";
            config.RuleFsts = Application.streamingAssetsPath + "/vits-zh-aishell3/phone.fst" + ","
        + Application.streamingAssetsPath + "/vits-zh-aishell3/date.fst" + ","
        + Application.streamingAssetsPath + "/vits-zh-aishell3/number.fst";
            config.MaxNumSentences = 1;
            OfflineTts tts = new OfflineTts(config);
            OfflineTtsCallback callback = new OfflineTtsCallback(MyCallback);
            OfflineTtsGeneratedAudio audio = tts.GenerateWithCallback("这是一个语音合成测试", 1, SpeakerId, callback);
            bool ok = audio.SaveToWaveFile(Application.streamingAssetsPath + "/test.wav");
            if (ok)
            {
                Debug.Log("succeeded!");
            }
            else
            {
                Debug.Log("Failed");
            }
        }
        catch (Exception e)
        {
            Debug.LogError(e);
        }
    }

    void MyCallback(IntPtr samples, int n)
    {
        float[] data = new float[n];

        Marshal.Copy(samples, data, 0, n);

        //Debug.Log("n:" + n);
    }

    // Update is called once per frame
    void Update()
    {

    }
}

在这里插入图片描述
在这里插入图片描述
不知为何生成的音频是8000HZ的……
24.5.15添加了方便测试的UI
在这里插入图片描述

最后,案发现场在https://gitee.com/awnuxcvbn/usherpa-onnx-tts.git

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Google I/O 2024 干货全解读:Gemini AI 横空出世,智能未来触手可及!

Google I/O 2024 干货全解读:Gemini AI 横空出世,智能未来触手可及! 博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》…

git 拉取指定目录

指令方式 打开 git 自带的Git Bash 工具 以拉取github中 fastjson 的 /src/test/java/oracle/sql/ 目录为例 1.创建文件夹和git 初始化 cd D:/Program\ Files mkdir fastjson cd fastjson git init 2.设置允许克隆子目录 git config core.sparsecheckout true 3.添加远程…

前端开发攻略---用代码带你走近双色球再到远离双色球

1、演示 2、玩法及规则 双色球是一种流行的彩票游戏,它在很多国家都有自己的版本。以下是双色球的详细玩法: 选择号码:玩家需要从1至33的红色球中选择6个号码,并且从1至16的蓝色球中选择1个号码,构成一组7个号码。 购…

使用make_blobs生成数据并使用KNN机器学习算法进行分类和预测以及可视化

生成数据 使用make_blobs生成数据并使用matplotlib进行可视化 完整代码: from sklearn.datasets import make_blobs # KNN 分类器 from sklearn.neighbors import KNeighborsClassifier # 画图工具 import matplotlib.pyplot as plt # 数据集拆分工具 from sklea…

Linux 第三十一章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

力扣127.单词接龙讲解

距离上一次刷题已经过去了.........嗯............我数一一下............整整十天,今天再来解一道算法题 由于这段时间准备简历,没咋写博客。。今天回来了!!!!!!!&…

【二叉树】(二)二叉树的基础修改构造及属性求解1

(二)二叉树的基础修改构造及属性求解1 翻转二叉树递归实现迭代实现(深度遍历)层序实现(广度遍历) 对称二叉树递归实现迭代实现(非层序遍历) 二叉树的最大深度递归法迭代法&#xff0…

你了解黑龙江等保测评么?

等保测评的全称是信息安全等级保护测评,是信息安全等级保护工作中的一项重要内容。 具体来说,等保测评是指按照国家相关标准和技术规范,对信息系统安全等级保护状况进行检测评估的活动。 其主要目的是发现信息系统存在的安全隐患和不足&…

学会给文件夹加密,保密措施不可或缺!

我们的个人信息、工作文件和其他重要数据都存储在各种设备和文件夹中,如何保证这些数据的安全,防止未经授权的访问和泄露,成为了一个不容忽视的问题。本文将探讨给文件夹加密的必要性,以及如何在手机和电脑上进行文件夹加密。 操作…

使用KNN预测一个新的点,以及将这个点用五角星进行matplotlib可视化展示

概述 基于之前的KNN案例继续做一些操作。 之前的完整代码如下: from sklearn.datasets import make_blobs # KNN 分类器 from sklearn.neighbors import KNeighborsClassifier # 画图工具 import matplotlib.pyplot as plt # 数据集拆分工具 from sklearn.model_…

DiskGenius帮你恢复系统无法识别的U盘数据

场景还原 前两天早上U盘复制文件卡死后,强行断开U盘,再次使用直接无法访问,心拔凉拔凉!! 使用驱动器G:中的光盘之前需要将其格式化 位置不可用-无法访问U盘 常规科普 一、U盘无法识别 1、检查U盘是否插入正确&…

【汇编语言】多文件组织

【汇编语言】多文件组织 文章目录 【汇编语言】多文件组织前言一、8086拓展1.子程序的另外一种写法2.程序的多文件组织 总结 前言 本篇文章将讲到子程序的另一种写法,以及程序的多文件组织。 一、8086拓展 1.子程序的另外一种写法 初始的程序 在这里我们对比一下…

6款电脑精选工具软件推荐!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 1.IP地址查看工具——纯真ip数据库 纯真IP数据库是一个易于操作的IP地址查询工具,它允许用户通过输入IP地址来查询其对应的地理位置…

每天五分钟玩转深度学习pytorch:pytorch中的张量类型

本文重点 和numpy一样,pytorch中也有自己的类型,本节课程我们将对它的类型进行介绍,并且学习不同的类型之间的转换,这是pytorch的基础。 基本类型 pytorch的基本变量称为张量Tensor,这张表是pytorch中的类型,Tensor有不同的类型,他和很多编程语言中的类型相似,它有 32…

ROS学习笔记(15)小车巡墙驾驶

0.前提 前一章我讲解了拉氏变换和PID,这一章我来讲解一下小车巡墙驾驶的理论和部分代码。 1.前情回顾 1.拉氏变换 拉普拉斯变换是要将时域问题转换成频域问题来处理。 2.PID控制器 转向角: 误差牺牲: 3.具体参看上一篇文章 2.巡墙驾驶…

AI 一键生成高清短视频,视频 UP 主们卷起来...

现在短视频越来越火,据统计,2023年全球短视频用户数量已达 10 亿,预计到2027年将突破 24 亿。对于产品展示和用户营销来说,短视频已经成为重要阵地,不管你喜不喜欢它,你都得面对它,学会使用它。…

Proxy和Reflect,打造灵活的JS代理机制 (代码示例)

在 JavaScript 中,代理(Proxy)和反射(Reflect)是 ES6 引入的两个新特性。Proxy用于创建一个对象的代理,从而实现对这个对象的操作的拦截、转换或扩展;而Reflect则提供了一系列与 JavaScript 运行…

线上3D博物馆搭建简单吗?有何优势?有哪些应用场景?

随着科技的飞速发展,传统的博物馆参观方式正在经历一场前所未有的变革,在科技的“加持”下,不少博物馆凭借强大的技术、创意和美学实践,频频“出圈”,线上3D博物馆逐渐崛起,这不仅丰富了人们的文化体验&…

Java集合之HashMap

概述 HashMap是基于哈希表的Map接口实现的一种存储key、value的数据结构,提供了所有可选的映射操作,且键值允许null的存在,不保证数据映射的顺序,也不能保证顺序在一段时间内保持不变 底层结构 jdk1.7:数组链表 jdk…