C#上位機實現報警語音播報

我們在開發C#上位機時,有時候會需要將報警信息通過語音進行播報,今天跟大家分享一下具體的實現過程。

一、組件安裝

首先我們創建好一個Windows窗體項目,然后添加System.Speech庫引用。

點擊引用,右擊添加引用,在程序集中,找到System.Speech,這個庫是Windows系統自帶的,所以直接點擊確定即可。

圖片

當然,我們也可以通過Nuget下載安裝:

圖片

二、組件封裝

接下來我們對System.Speech這個庫進行封裝,核心圍繞SpeechSynthesizer這個類。

1、創建一個SpeechHelper類,初始化SpeechSynthesizer對象。

?private?SpeechSynthesizer synthesizer;public?int?Rate;public?int?Volume;public?SpeechHelper(){synthesizer =?new?SpeechSynthesizer();synthesizer.SpeakStarted += Synthesizer_SpeakStarted;synthesizer.SpeakCompleted += Synthesizer_SpeakCompleted;synthesizer.Volume =?100;synthesizer.Rate =?0;}

2、通過事件判斷是否正在播報。

?//是否正在播報public?bool?IsSpeeking {?get;?set; } =?false;private?void?Synthesizer_SpeakStarted(object?sender, SpeakStartedEventArgs e){IsSpeeking =?true;}private?void?Synthesizer_SpeakCompleted(object?sender, SpeakCompletedEventArgs e){IsSpeeking =?false;}

3、開始播報和停止播報方法,這里建議使用異步SpeekAsync。

public?void?Speak(string?text)
{if?(!string.IsNullOrWhiteSpace(text)){synthesizer.SpeakAsync(text);}
}
public?void?Stop()
{synthesizer.SpeakAsyncCancelAll();
}

4、編寫調節語速和音量的方法。

?public?void?SetVolume(int?volume){if?(volume >=?0?&& volume <=?100){synthesizer.Volume = volume;Volume = volume;}}public?void?SetRate(int?rate){if?(rate >=?-10?&& rate <=?10){synthesizer.Rate = rate;Rate = rate;}}

5、獲取和選擇播放的音色類型。

public?void?SelectVoice(string?voiceName){try{synthesizer.SelectVoice(voiceName);}catch?(Exception ex){throw?new?Exception("無法選擇語音 "?+ voiceName +?": "?+ ex.Message);}}public?string[]?GetInstalledVoices(){List<string> list =?new?List<string>();foreach?(InstalledVoice installedVoice?in?synthesizer.GetInstalledVoices()){list.Add(installedVoice.VoiceInfo.Name);}return?list.ToArray();}

三、案例應用

我們對SpeechHelper進行案例應用。

1、我們先創建一個簡單的窗體:

2、核心代碼就是創建SpeechHelper對象,調用Speek進行播報,調用Stop停止播報:

 //創建對象private SpeechHelper speechHelper = new SpeechHelper();//開始播報private void btn_Start_Click(object sender, EventArgs e){if (!this.speechHelper.IsSpeeking){this.speechHelper.Speak(this.txt_Content.Text);}}//停止播報private void btn_Stop_Click(object sender, EventArgs e){this.speechHelper.Stop();}

3、然后可以選擇朗讀者或者調節音量和語速:

private void FrmMain_Load(object sender, EventArgs e)
{//獲取朗讀者列表this.cmb_Voice.Items.AddRange(speechHelper.GetInstalledVoices());
}
//選擇朗讀者
private void cmb_Voice_SelectedIndexChanged(object sender, EventArgs e)
{this.speechHelper.SelectVoice(this.cmb_Voice.Text);
}
//音量設置
private void track_Volumn_Scroll(object sender, EventArgs e)
{this.speechHelper.SetVolume(this.track_Volumn.Value);
}
//語速設置
private void track_Rate_Scroll(object sender, EventArgs e)
{this.speechHelper.SetRate(this.track_Rate.Value);
}

4、運行程序,結果如下所示:

選擇朗讀者,輸入播報內容,點擊開始播報即可。

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

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

相關文章

01-StarRocks安裝部署FAQ

StarRocks安裝部署FAQ 概述 本文檔整理了StarRocks安裝部署過程中常見的問題和解決方案,涵蓋了環境準備、集群部署、配置優化等各個方面,幫助用戶快速解決安裝部署過程中遇到的問題。 環境準備FAQ Q1: StarRocks對硬件配置有什么要求? A: StarRocks的硬件配置要求如下:…

MinIO入門教程:從零開始搭建方便快捷的分布式對象存儲服務

目錄 一、MinIO簡介二、環境準備三、MinIO服務部署1. 下載指定版本MinIO鏡像2. 啟動MinIO容器3. 參數詳解 四、訪問MinIO控制臺1. 在瀏覽器中打開管理控制臺&#xff1a;2. 輸用戶名和密碼登錄3. 創建存儲桶Bucket4. 設置訪問權限為公有5. 上傳文件6. 訪問文件 一、MinIO簡介 …

多卡解決報錯torch.distributed.elastic.multiprocessing.errors.ChildFailedError的問題

使用多卡運行 Pytorch出現下面的報錯&#xff1a; E0619 10:29:15.774000 5065 site-packages/torch/distributed/elastic/multiprocessing/api.py:874] failed (exitcode: -11) local_rank: 0 (pid: 5184) of binary: /root/miniconda3/bin/python Traceback (most recent ca…

Kubernetes 架構的兩種節點

前言 Kubernetes 采用主從(master-node)架構模式&#xff0c;主要由主節點&#xff0c;也稱 控制平面(Control Plane)和工作節點(node)組成。 master 節點職責&#xff1a; ?集群管理?&#xff1a;負責整個集群的全局決策和狀態管理API服務?&#xff1a;通過 kube-apiser…

數據迷霧中的燈塔:奧威BI+AI數據分析如何照亮企業決策之路

決策進化史&#xff1a;從“盲人摸象”到“智能導航” 在每天83%的中國企業所面臨的決策場景中&#xff0c;數據往往沉默不語&#xff0c;無法為管理者提供明確的指引。從決策依賴人工統計的“石器時代”&#xff08;2010年前&#xff09;&#xff0c;到依賴靜態報表的“鐵器時…

Flutter 與 原生(Android/iOS)通信 Platform Channel

在Flutter中&#xff0c;Platform Channel是實現Flutter與原生平臺&#xff08;Android/iOS&#xff09;通信的核心機制&#xff0c;其設計遵循輕量級異步通信原則&#xff0c;用于解決Flutter跨平臺開發時與原生功能的交互需求。 一、核心作用 Flutter作為跨平臺框架&#x…

django調用 paramiko powershell 獲取cpu 個數

在Django中調用paramiko庫執行PowerShell命令來獲取CPU個數&#xff0c;可以通過以下步驟實現&#xff1a; 步驟1&#xff1a;安裝paramiko 首先&#xff0c;確保你的Django項目中已經安裝了paramiko庫。如果尚未安裝&#xff0c;可以通過pip安裝&#xff1a; pip install pa…

React 表單太卡?也許你用錯了控制方式

&#x1f399; 歡迎來到《前端達人 播客書單》第 23 期。 視頻版&#xff08;播客風格更精彩&#xff09; 今天我們聚焦一個「寫前端永遠逃不掉」的主題&#xff1a;表單處理。 你有沒有遇到過這些問題&#xff1a; 表單怎么一改就卡&#xff1f;state 是不是用錯了&#xff1…

`customRef` 在實戰中的使用:防抖、計算屬性緩存和異步數據獲取

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

騰訊混元3D制作角色模型的教程-3

騰訊混元3D中實現角色骨骼綁定與動畫生成的詳細操作指南,結合官方功能說明及實操要點整理: ?? 一、前期準備:模型要求 角色姿態規范 僅支持標準T-pose(大字型站立) 的全身人物模型(如卡通角色)。 非標準姿態或非人形模型(如動物、道具)暫不支持自動綁骨。 模型來源…

React 和 Vue 項目中集成基于 Svelte 的 `Bytemd` 庫 || @bytemd/react` 底層實現原理

Bytemd 并使用Svelte 框架編寫的。Svelte 是一種不同的前端框架&#xff0c;它的核心思想是在編譯時將組件代碼轉換成高效、原生 JavaScript&#xff0c;從而避免運行時虛擬 DOM 的開銷。 理解了這一點&#xff0c;我們就可以深入探討如何在 React 和 Vue 項目中適配 Svelte 編…

【新品解讀】高性能緊湊型 RFSoC FPGA 開發平臺 AXW22,重塑射頻開發體驗

如果您正在煩惱如何在有限的物理空間和預算內&#xff0c;依然實現卓越的射頻帶寬與處理能力&#xff0c;ALINX 基于 AMD RFSoC FPGA 開發板 AXW22 正是為您準備的。 &#xff08;AMD Zynq UltraScale RFSoC FPGA 射頻開發平臺 AXW22&#xff09; 和所有 RFSoC 平臺一樣&#…

Spring @ModelAttribute注解全解析:數據綁定與模型管理

Spring 的 @ModelAttribute 注解主要用于數據綁定和模型屬性管理,支持方法級別和參數級別的應用,以下是其核心特性和使用場景: ?? 一、核心功能 數據綁定 將 HTTP 請求參數(如表單字段、查詢參數)自動綁定到 Java 對象。支持從請求參數、URI 路徑變量、請求頭等多來源獲…

[project-based-learning] 開源貢獻指南 | 自動化鏈接驗證 | Issue模板規范

第四章&#xff1a;貢獻指南 歡迎回來&#xff01;在上一章《項目分類體系》中&#xff0c;我們探討了README.md文件如何通過編程語言和子類別組織教程&#xff0c;從而提升檢索效率。 現在已了解教程列表的構成&#xff08;《教程列表》&#xff09;、條目編寫規范&#xff…

OSCP備戰-LordOfTheRoot靶機復現步驟

PDF下載&#xff1a; Target-practice/Range at main szjr123/Target-practice 一、靶機描述 靶機地址&#xff1a;https://www.vulnhub.com/entry/lord-of-the-root-101,129/ 靶機難度&#xff1a;中等&#xff08;CTF&#xff09; 靶機描述&#xff1a;這是KoocSec為黑…

蘋果或140億美元收購Perplexity,AI搜索格局面臨重構

據多家媒體報道&#xff0c;蘋果內部高管近期就競購AI初創公司Perplexity的可能性舉行了初步會談。若交易最終達成&#xff0c;可能將以接近140億美元的估值完成&#xff0c;成為蘋果歷史上最大規模的收購案12。盡管討論仍處于早期階段&#xff0c;且蘋果尚未與Perplexity管理層…

屠龍刀策略

該策略是一個針對金融市場的自動化交易策略,主要用于日內交易,特別關注于在中國金融期貨市場(如滬深300指數期貨(IF))的日間交易時段(09:20至15:15)進行操作。下面是該策略核心部分的代碼注解解析: 參數定義 - `Nnn1(5)` 和 `Nnn2(20)`:策略中的兩個參數,用于內部計…

【本機已實現】使用Mac部署Triton服務,使用perf_analyzer、model_analyzer

我們的目標是星辰大海 硬件配置&#xff1a;Apple M224 GB Tirtion實現過程 1??Docker安裝 Tirtion的實現&#xff0c;首先要確保系統上的Docker可用 使用默認源會導致拉取失敗&#xff0c;因為墻 Error response from daemon: Get "https://registry-1.docker.io/v2…

idea依賴下載慢解決

setttings.xml <mirrors><mirror><id>aliyunmaven</id><name>阿里云公共倉庫</name><url>https://maven.aliyun.com/repository/public</url><mirrorOf>*</mirrorOf> <!-- 匹配所有倉庫請求 --></mirr…

C# WPF常用調試工具匯總

除了Live Visual Tree、Live Property Explorer和Snoop外&#xff0c;WPF開發還有多種強大的調試工具。以下是完整的工具集合及其詳細使用方法&#xff1a; 1. WPF Performance Suite (WPF性能分析套件) 簡介 微軟官方提供的專業WPF性能分析工具&#xff0c;包含多個組件用于診…