文本和語音互轉

目錄

1. 下載依賴ddl

2. 引入Pom依賴?

3. java代碼

二. 語音轉文本

1. 下載中文語音轉文本的模型

2. 引入pom依賴

3. java代碼

4. 運行效果


1. 下載依賴ddl

文字轉語音文件需要使用jacob的dll文件放在jdk安裝目錄下的bin文件夾下 點擊官網下載錄或者通過csdn下載

2. 引入Pom依賴?

        <dependency><groupId>com.hynnet</groupId><artifactId>jacob</artifactId><version>1.18</version></dependency>

3. java代碼


import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;/*** 文件轉語音的工具類*/
public class JacobUtil {public static void main(String[] args) {String text = "很喜歡朗誦。上大學時,他是校廣播站的播音員。母親說你可以去市廣播電臺試試。他說可以嗎?母親說為什么不可以," +"只要心是明亮的,天空就是明亮的,你的世界,就是明亮的。再聽到這句話時,感覺完全不一樣了。" +"雖然他仍然消沉,可是偶爾當母親說到什么有趣的事時,他也會開心得哈哈大笑。他聽從母親的建議," +"真的在某一天,去市電臺應聘。本來他只想應付一下母親,可出乎意料的是,他竟被破格錄取為電臺的兼職主持人," +"主持晚間的一檔節目。";String filePath = "C:\\Users\\admin\\Downloads\\call.mp3";textToSpeech(text, filePath);}/*** 將文本轉化為語音** @param text     文本內容* @param filePath 語音文件*/public static void textToSpeech(String text, String filePath) {ActiveXComponent activeXComponent = new ActiveXComponent("Sapi.SpVoice");Dispatch dispatch = activeXComponent.getObject();//運行時輸出語音內容//文件名稱activeXComponent = new ActiveXComponent("Sapi.SpFileStream");//生成語音文件Dispatch fileStreamDispatch = activeXComponent.getObject();activeXComponent = new ActiveXComponent("Sapi.SpAudioFormat");//音頻Dispatch audioDispatch = activeXComponent.getObject();Dispatch.putRef(fileStreamDispatch, "Format", audioDispatch);//設置文件流格式Dispatch.put(audioDispatch, "Type", new Variant(22));//設置音頻流格式//調用輸出文件流打開方法,創建一個.wav .mp3 .mp4   .wma文件Dispatch.call(fileStreamDispatch, "Open", new Variant(filePath), new Variant(3), new Variant(true));Dispatch.putRef(dispatch, "AudioOutputStream", fileStreamDispatch);//設置聲音對象的音頻流輸出流為輸出文件對象Dispatch.put(dispatch, "Volume", new Variant(100));//設置音量0-100Dispatch.put(dispatch, "Rate", new Variant(0));//設置朗讀速度Dispatch.call(dispatch, "Speak", new Variant(text));//開始朗讀Dispatch.call(fileStreamDispatch, "Close"); //關閉輸出文件流Dispatch.putRef(dispatch, "AudioOutputStream", null);audioDispatch.safeRelease();fileStreamDispatch.safeRelease();dispatch.safeRelease();activeXComponent.safeRelease();}
}

二. 語音轉文本

1. 下載中文語音轉文本的模型

點擊下載 模型1(小)? 模型2(大)? 這兩個模型都是中文, 如果有其他語種的識別,可以去官網下載對應語種的模型 注意 需要解壓

2. 引入pom依賴

        <!-- 獲取音頻信息 --><dependency><groupId>org</groupId><artifactId>jaudiotagger</artifactId><version>2.0.3</version></dependency><!-- 語音識別 --><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.7.0</version></dependency><dependency><groupId>com.alphacephei</groupId><artifactId>vosk</artifactId><version>0.3.32</version></dependency>

3. java代碼

package org.example.deepseek;import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.InputStream;
import javax.sound.sampled.AudioSystem;
import org.vosk.LogLevel;
import org.vosk.Recognizer;
import org.vosk.LibVosk;
import org.vosk.Model;public class VoiceUtil {public static void main(String[] argv) throws Exception {String filePath = "D:\\ai\\voice\\call.mp3";String modelPath = "D:\\ai\\voice\\vosk-model-cn-0.22";//注意模型需要解壓后引入模型的根目錄String content = speechToText(filePath, modelPath);System.out.println(content);}public static String speechToText(String filePath, String modelPath) throws Exception {LibVosk.setLogLevel(LogLevel.INFO);Model model = new Model(modelPath);FileInputStream fileInputStream = null;BufferedInputStream bufferedInputStream = null;InputStream inputStream = null;Recognizer recognizer = null;try {fileInputStream = new FileInputStream(filePath);bufferedInputStream = new BufferedInputStream(fileInputStream);inputStream = AudioSystem.getAudioInputStream(bufferedInputStream);recognizer = new Recognizer(model, 16000);int bytes;byte[] b = new byte[4096];while ((bytes = inputStream.read(b)) >= 0) {recognizer.acceptWaveForm(b, bytes);}return recognizer.getFinalResult();//System.lineSeparator()} finally {close(recognizer);close(inputStream);close(bufferedInputStream);close(fileInputStream);}}public static void close(AutoCloseable obj) {if (obj != null) {try {obj.close();} catch (Exception e) {e.printStackTrace();}}}
}

4. 運行效果

?

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

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

相關文章

DeepSeek破局啟示錄:一場算法優化對算力霸權的降維打擊

導言 2024年,中國AI大模型賽道殺出一匹黑馬——深度求索(DeepSeek)。從數學推理能力超越GPT-4,到API價格僅為Claude 3.5的1/53,再到開源生態的快速擴張,DeepSeek的崛起不僅打破了“算力霸權”的固有認知,更揭示了AI行業底層邏輯的深刻變革。這場技術革命背后,隱藏著技術…

Python大數據可視化:基于python大數據的電腦硬件推薦系統_flask+Hadoop+spider

開發語言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7數據庫&#xff1a;mysql 5.7數據庫工具&#xff1a;Navicat11開發軟件&#xff1a;PyCharm 系統展示 管理員登錄 管理員功能界面 價格區間界面 用戶信息界面 品牌管理 筆記本管理 電腦主機…

阿里云虛機的遠程桌面登錄提示帳戶被鎖定了

提示由于安全原因&#xff0c;帳戶被鎖定。 阿里云虛機ECS的遠程桌面登錄提示帳戶被鎖定了&#xff0c;只能登錄阿里云處理 阿里云-計算&#xff0c;為了無法計算的價值 需選擇通過VNC連接 然后計算機管理&#xff0c;解除帳戶鎖定即可。

Grok 使用指南

文章來源&#xff1a;Grok 漫游指南 | xAI Docs 歡迎&#xff01;在本指南中&#xff0c;我們將引導您了解使用 xAI API 的基礎知識。 #第 1 步&#xff1a;創建 xAI 帳戶 您需要一個 xAI 帳戶才能訪問 xAI API。在此處注冊帳戶。 創建賬戶后&#xff0c;您需要為其加載積分…

Node.js高頻面試題精選及參考答案

目錄 什么是 Node.js?它的主要特點有哪些? Node.js 的事件驅動和非阻塞 I/O 模型是如何工作的? 為什么 Node.js 適合處理高并發場景? Node.js 與傳統后端語言(如 Java、Python)相比,有哪些優勢和劣勢? 簡述 Node.js 的運行原理,包括 V8 引擎的作用。 什么是 Nod…

Servlet概述(Ⅰ)

目錄 一、Servlet概述 演示 創建JavaWeb項目&#xff08;2017版本為例&#xff09; 1. 打開 IntelliJ IDEA 2. 選擇項目類型 3. 配置框架 二、Servlet初識(熟練) 1.servlet說明 2.Servlet 接口方法 3.創建Servlet 4.JavaWeb請求響應流程 ?編輯 ?編輯 5.servlet…

Windows 小記 18 —— 子窗口繼承父窗口的樣式

子窗口會繼承父窗口或者所有者窗口的一些樣式。 當我們使用 CreateWindowExW 創建窗口后&#xff0c;指定其 HwndParent 參數時&#xff0c;或者通過 SetWindowLongPtr(vd->Hwnd, GWLP_HWNDPARENT, (LONG_PTR)vd->HwndParent); 指定所有者窗口時&#xff0c;子窗口將從父…

19、《Springboot+MongoDB整合:玩轉文檔型數據庫》

SpringbootMongoDB整合&#xff1a;玩轉文檔型數據庫 摘要&#xff1a;本文全面講解Spring Boot與MongoDB的整合實踐&#xff0c;涵蓋環境搭建、CRUD操作、聚合查詢、事務管理、性能優化等核心內容。通過15個典型代碼示例&#xff0c;演示如何高效操作文檔數據庫&#xff0c;深…

跳躍游戲II(力扣45)

這道題在跳躍游戲(力扣55)-CSDN博客 的基礎上需要找到最小的跳躍次數。那么我們需要用一個變量來統計跳躍次數&#xff0c;而難點就在于何時讓該變量的值增加。這一點我寫在注釋中&#xff0c;大家結合我的代碼會更好理解。其他部分跟跳躍游戲(力扣55)-CSDN博客 幾乎相同&#…

Linux基礎開發工具的使用(apt、vim、gcc、g++、gdb、make、makefile)

Linux軟件包管理器–apt Linux安裝軟件的方式 在Linux下安裝軟件的方法有以下三種&#xff1a; 下載到程序的源代碼&#xff0c;自己編譯出可執行程序獲取deb安裝包、然后使用dpkg命令安裝。&#xff08;不解決依賴關系&#xff09;通過apt進行安裝軟件。 小知識點&#xf…

C/C++ | 每日一練 (2)

&#x1f4a2;歡迎來到張胤塵的技術站 &#x1f4a5;技術如江河&#xff0c;匯聚眾志成。代碼似星辰&#xff0c;照亮行征程。開源精神長&#xff0c;傳承永不忘。攜手共前行&#xff0c;未來更輝煌&#x1f4a5; 文章目錄 C/C | 每日一練 (2)題目參考答案封裝繼承多態虛函數底…

【前端框架】vue2和vue3的區別詳細介紹

Vue 3 作為 Vue 2 的迭代版本&#xff0c;在性能、語法、架構設計等多個維度均有顯著的變革與優化。以下詳細剖析二者的區別&#xff1a; 響應式系統 Vue 2 實現原理&#xff1a;基于 Object.defineProperty() 方法實現響應式。當一個 Vue 實例創建時&#xff0c;Vue 會遍歷…

基于Spring Boot的農事管理系統設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導&#xff0c;歡迎高校老師/同行前輩交流合作?。 技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;…

【RISCV 常見匯編指令學習 1.2 -- CSRW | CSRR | XORI | ANDI | DRET | J | JR】

文章目錄 Overview1. CSRW 與 CSRR2. SW 與 lw3. XORI 與 ANDI4. J 與 JR5. ret 與 dret6. 總結&#x1f310; Sources Overview 在 RISCV 匯編中&#xff0c;不同類型的指令用于完成控制寄存器操作、內存存取、位操作、跳轉以及返回等功能。下面將逐對詳細介紹這些指令&#…

MySQL六大日志的功能介紹。

前言 首先&#xff0c;MySQL的日志應該包括二進制日志&#xff08;Binary Log&#xff09;、錯誤日志&#xff08;Error Log&#xff09;、查詢日志&#xff08;General Query Log&#xff09;、慢查詢日志&#xff08;Slow Query Log&#xff09;、重做日志&#xff08;Redo …

【AI】GitHub Copilot

GitHub Copilot 是一款由 GitHub 和 OpenAI 合作開發的 AI 編程助手&#xff0c;它可以在多種開發工具中使用。以下是 GitHub Copilot 支持的主要開發工具和平臺&#xff1a; 1. Visual Studio Code (VS Code) 官方支持&#xff1a;GitHub Copilot 在 VS Code 中擁有最完整的集…

拆解微軟CEO納德拉戰略藍圖:AI、量子計算、游戲革命如何改寫未來規則!

2025年2月19日 知名博主Dwarkesh Patel對話微軟CEO薩蒂亞納德拉 在最新訪談釋放重磅信號&#xff1a;AI將掀起工業革命級增長&#xff0c;量子計算突破引爆材料科學革命&#xff0c;游戲引擎進化為世界模擬器。 整個視頻梳理出幾大核心觀點&#xff0c;揭示科技巨頭的未來十年…

4.2 學習UVM中的“connect_phase“,將其應用到具體案例分為幾步?

文章目錄 前言1. connect_phase 的作用與執行順序2. TLM 連接的類型與示例2.1 生產者-消費者模型2.2 分析端口廣播模型 3. 層次化連接示例4. 動態連接與條件化配置5. 關鍵注意事項6. 完整示例&#xff1a;SoC 驗證環境連接6.1 Monitor 廣播數據6.2 Scoreboard 和 Coverage6.3 E…

HBase Shell

目錄 1. HBase常用命令1.1 create命令1.2 list命令1.3 describe命令1.4 put命令1.5 get命令1.6 scan命令1.7 count命令1.8 exists命令1.9 修改表結構1.10 delete命令1.11 deleteall命令1.12 truncate命令1.13 disable、drop命令1.14 status命令1.15 version命令 2. HBase Shell…

MATLAB基礎學習相關知識

MATLAB安裝參考&#xff1a;抖音-記錄美好生活 MATLAB基礎知識學習參考&#xff1a;【1小時Matlab速成教程-嗶哩嗶哩】 https://b23.tv/CnvHtO3 第1部分&#xff1a;變量定義和基本運算 生成矩陣&#xff1a; % 生成矩陣% 直接法% ,表示行 ;表示列 a [1,2,3;4,5,6;7,8,9];%…