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 updatevoid 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 framevoid Update(){}
}

在這里插入圖片描述
在這里插入圖片描述
不知為何生成的音頻是8000HZ的……
24.5.15添加了方便測試的UI
在這里插入圖片描述

最后,案發現場在https://gitee.com/awnuxcvbn/usherpa-onnx-tts.git

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12751.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12751.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12751.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++】vector的底層原理講解及其實現

目錄 一、認識vector底層結構 二、初始化vector的函數 構造函數拷貝構造賦值構造initializer_list構造迭代器區間構造 三、迭代器 四、數據的訪問 五、容量相關的函數 六、關于數據的增刪查改操作 一、認識vector底層結構 STL庫中實現vector其實是用三個指針來完成的&#x…

Promise 還能這樣理解呀!

目錄: 1、Promise是什么 2、Promise三種狀態 3、Promise如何使用 4、Promise作用

一種快速提升文件傳輸速度的方法

在面對網絡條件不理想時,進行文件傳輸往往會導致傳輸速率的顯著下降。為了克服這一難題,鐳速軟件特別引入了一系列創新的設置選項,旨在顯著提升文件傳輸速率。通過這些優化措施,用戶即使在網絡不佳的情況下,也能享受到…

機器人工具箱學習(三)

一、動力學方程 機器人的動力學公式描述如下: 式中, τ \boldsymbol{\tau} τ表示關節驅動力矩矢量; q , q ˙ , q \boldsymbol{q} ,\; \dot{\boldsymbol { q }} ,\; \ddot{\boldsymbol { q }} q,q˙?,q?分別為廣義的關節位置、速度和加速…

uniapp如何打包預約上門按摩APP

uniapp如何打包預約上門按摩APP? 開發工具:HBuilderX 一、創建移動應用 1、 點擊此處微信開放平臺 2、點擊【管理中心 - 移動應用 - 創建移動應用】填寫資料后等待審核 app運行流程圖 簽名如何獲取: 1)先把打包好的app安裝在手…

uniapp 小程序低功耗藍牙配網 ble配網 物聯網

1.獲取藍牙列表 bleList.vue <template><view><button touchstart"startSearch">獲取藍牙列表</button><scroll-view :scroll-top"scrollTop" scroll-y class"content-pop"><viewclass"bluetoothItem&q…

java多線程——線程池

概述 線程池是管理java線程生命周期的工具 降低資源消耗。通過池化技術能夠重復利用已創建的線程&#xff0c;降低線程頻繁創建和銷毀造成的資源消耗提高線程的可管理性。無需程序員手動銷毀線程&#xff0c;控制線程創建的數量&#xff0c;避免無限制的創建影響系統穩定性 …

找不到kotlin.Pair的類文件

需要添加kotlin的依賴&#xff1a; implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.22"

OpenHarmony上移植memtester

1. 下載源碼&#xff1a; wget https://pyropus.ca./software/memtester/old-versions/memtester-4.6.0.tar.gz 2. 解壓并指定交叉編譯方式 解壓 tar -xvf memtester-4.6.0.tar.gz 修改conf-cc和conf-ld&#xff0c;指定交叉編譯方式 conf-cc conf-ld 3. 編譯 直接運行m…

Ubuntu安裝ZLMediaKit

方式一 1、安裝vcpkg 在Ubuntu上安裝vcpkg的步驟如下&#xff1a; 安裝必要的依賴&#xff1a; 首先&#xff0c;你可能需要安裝cmake和ninja-build。你可以使用apt包管理器來安裝它們&#xff1a; bash復制代碼sudo apt install cmake ninja-build下載vcpkg源碼&#xff1a;…

后端開發面經系列 -- 阿里C++二面面經

阿里C二面面經 公眾號&#xff1a;阿Q技術站 來源&#xff1a;https://www.nowcoder.com/feed/main/detail/fc4a48403b534aafa6a6bce14b542c4e?sourceSSRsearch 1、智能指針&#xff1f; std::shared_ptr&#xff1a; 原理&#xff1a;std::shared_ptr是基于引用計數的智能指…

Stable Diffusion入門使用技巧及個人實例分享--大模型及lora篇

大家好&#xff0c;近期使用Stable Diffusion比較多&#xff0c;積累整理了一些內容&#xff0c;得空分享給大家。如果你近期正好在關注AI繪畫領域&#xff0c;可以看看哦。 本文比較適合已經解決了安裝問題&#xff0c;&#xff08;沒有安裝的在文末領取&#xff09; 在尋找合…

【RAG】Linux系統下ppt轉pptx,讀取解析pptx文本數據

前情提要 檢索增強生成&#xff08;RAG&#xff09;技術&#xff0c;作為 AI 領域的尖端技術&#xff0c;能夠提供可靠且最新的外部知識&#xff0c;極大地便利了各種任務。在 AI 內容生成的浪潮中&#xff0c;RAG 通過其強大的檢索能力為生成式 AI 提供了額外的知識&#xff…

vue3 動態加載頁面

首先&#xff0c;通過下面代碼告訴編譯器要編譯哪些頁面 static modules import.meta.glob(./views/**/*.vue);然后動態加載函數這樣寫&#xff1a; static asyncLoadView (path: string) > {return defineAsyncComponent({loader: <any>Global.modules[./views/${…

Redis的跳表:高效實現有序集合

在 Redis 中&#xff0c;跳表&#xff08;Skip List&#xff09;是一種常用的數據結構&#xff0c;用于實現有序集合&#xff08;Sorted Set&#xff09;。跳表是一種基于鏈表的數據結構&#xff0c;具有快速的查找、插入和刪除操作&#xff0c;適用于有序集合的實現。 本文將…

分布式搜索——ElasticSeach簡介

一般都用數據庫存儲數據&#xff0c;然后對數據庫進行查詢獲取數據&#xff0c;但是當數據量很大時&#xff0c;查詢效率就會很慢&#xff08;具體下面會講到&#xff09;&#xff0c;所以這種情況下就會使用到ElasticSeach ElasticSeach的基本介紹 ElasticSeach是一 款非常強…

2024重慶高等教育博覽會|2024重慶高教展|全國高等教育博覽會

2024重慶高等教育博覽會|2024重慶高教展|全國高等教育博覽會 第62屆全國高等教育博覽會&#xff08;2024.秋季重慶&#xff09; 時間&#xff1a;2024年11月15-17日 地點&#xff1a;重慶國際博覽中心 組織機構 主辦單位&#xff1a;中國高等教育學會 承辦單位&#xff1a;國藥…

杰發科技AC7801——ADC之Bandgap和內部溫度計算

0. 參考 電流模架構Bandgap設計與仿真 bandgap的理解&#xff08;內部帶隙電壓基準&#xff09; ? ? 雖然看不懂這些公式&#xff0c;但是比較重要的一句應該是這個&#xff1a;因為傳統帶隙基準的輸出值為1.2V ? 1. 使用 參考示例代碼。 40002000是falsh控制器寄…

NXP RT1176(一)——二級BootLoader開發(安全引導加載程序SBL)

目錄 1. 開發環境 2. 二級BOOT的功能 3. 步驟 3.1 配置源碼 3.2 構建項目 3.2.1 MDK 3.2.2 IAR&#xff08;IAR也編譯一下工程看看&#xff0c;這樣兩個平臺都可以支持了&#xff09; 單核M7的開發&#xff01;&#xff01; 1. 開發環境 本文Windows下開發&#xff1a;…

【無標題】vo dto

在Java中&#xff0c;VO、PO、DTO都是常用的數據對象模型。 VO&#xff08;Value Object&#xff09;是值對象&#xff0c;通常用于表示一個業務實體或者頁面展示的內容。VO通常包含了多個屬性&#xff0c;并且這些屬性的類型和名稱與業務相關。VO并不一定與數據庫中的表結構相…