System.Speech是.NET框架的一部分,提供了語音識別和語音合成的功能。通過使用System.Speech命名空間中的類,開發人員可以在.NET應用程式中實現語音識別功能。 在本文中,我將演示如何使用 System.Speech.NET,這是開發語音應用程式比較牛逼的內庫。它適用於 .NE ...
System.Speech是.NET框架的一部分,提供了語音識別和語音合成的功能。通過使用System.Speech命名空間中的類,開發人員可以在.NET應用程式中實現語音識別功能。 在本文中,我將演示如何使用 System.Speech.NET,這是開發語音應用程式比較牛逼的內庫。它適用於 .NET 4.x和.NET Core以上版本。它支持語音識別和文本到語音轉換,並提供統一的 API。藉助 System.Speech.NET,您可以輕鬆創建理解和響應自然語言輸入的應用程式。本文將在這裡重點介紹System.Speech的Speak 方法。
使用流程
這裡我們使用winfrom來演示System.Speech的使用,流程如下:
1)創建一個文件夾並運行dotnet命令以創建一個winfrom新項目,也可以用vs新建winfrom。
dotnet new winforms
2) 打開“管理NuGet程式包“搜索System.Speech後安裝nuget包。如下圖
3)創建一個擴展類
這個主要擴展string的speak功能,後面能用上。
using System.Speech.Synthesis;
namespace System
{
public static class SystemSpeechExtension
{
// 預設語音轉換速率
const int PDefaultRate = 3;
// 錯誤信息語音轉換速率
const int PErrorRate = 4;
/// <summary>
/// 將字元串轉換為語音併進行播放,使用預設速率。
/// </summary>
/// <param name="text2speak">要轉換為語音的字元串</param>
public static void Speak(this string text2speak)
{
text2speak.Speak(PDefaultRate);
}
/// <summary>
/// 將字元串轉換為語音併進行播放,可以指定轉換速率。
/// </summary>
/// <param name="text2speak">要轉換為語音的字元串</param>
/// <param name="rate">語音轉換速率</param>
public static void Speak(this string text2speak, int rate)
{
var voice = new SpeechSynthesizer();
voice.SetOutputToDefaultAudioDevice();
voice.Rate = rate;
voice.Speak(text2speak);
}
/// <summary>
/// 將錯誤信息轉換為語音進行播放,在調試模式下使用 PErrorRate 速率。
/// </summary>
/// <param name="text2speak">要轉換為語音的錯誤信息</param>
public static void SpeakError(this string text2speak)
{
#if(DEBUG)
$"Error {text2speak} while debugging!".Speak(PErrorRate);
#endif
}
}
}
4)新建一個winfrom窗體使用這個擴展類,效果如下:
按鈕代碼如下:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 當按鈕1被點擊時,將文本框中的內容轉換為語音併進行播放。
/// </summary>
private void button1_Click(object sender, EventArgs e) => this.textBox1.Text.Speak();
/// <summary>
/// 當按鈕2被點擊時,將文本框中的內容以指定的速率進行語音轉換並播放。
/// </summary>
private void button2_Click(object sender, EventArgs e) => this.textBox1.Text.Speak(3);
/// <summary>
/// 當按鈕3被點擊時,首先將一條指定的文本轉換為語音並播放,然後在一個 try-catch 塊中故意引發異常並捕獲它。
/// 異常消息將被轉換為語音並作為錯誤信息進行播放。
/// </summary>
private void button3_Click(object sender, EventArgs e)
{
"請註意, 未填寫內容,請填寫內容!".Speak();
try
{
var n = 0; var i = 0;
var error = n / i;
}
catch (Exception ex)
{
ex.Message.SpeakError();
}
}
}
這樣代碼部分全部寫完,大家可以點擊按鈕來試一試了。
結語
本文介紹了System.Speech的文字轉語音功能,並用案例介紹了它的使用流程。System.Speech還有很多功能,比如語音識別、音頻輸入和輸出控制等,篇幅有限這裡就不在介紹,感興趣可以到官網查閱API來瞭解它使用方法。希望本文對你有所收穫,你對System.Speech有什麼看法歡迎留言或者吐槽本文。
來源公眾號:DotNet開發跳槽