.NET使用System.Speech轻松读取文本

这篇具有很好参考价值的文章主要介绍了.NET使用System.Speech轻松读取文本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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包。如下图

.NET使用System.Speech轻松读取文本

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窗体使用这个扩展类,效果如下:

.NET使用System.Speech轻松读取文本

按钮代码如下:

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有什么看法欢迎留言或者吐槽本文。文章来源地址https://www.toymoban.com/news/detail-471826.html

来源公众号:DotNet开发跳槽

到了这里,关于.NET使用System.Speech轻松读取文本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Google语音转文字】Speech to Text 超级好用的语音转文本API

    前面有一篇博客说到了讯飞输入法,支持语音输入,也支持电脑内部音源输入,详细参考:【实时语音转文本】PC端实时语音转文本(麦克风外音系统内部音源) 但是它只是作为一个工具来使用,如果我们想自己做一些好玩的东西,比如通过语音来控制电脑做一些自动化的操作

    2024年02月02日
    浏览(63)
  • 使用 Elasticsearch 轻松进行中文文本分类

    本文记录下使用 Elasticsearch 进行文本分类,当我第一次偶然发现 Elasticsearch 时,就被它的易用性、速度和配置选项所吸引。每次使用 Elasticsearch,我都能找到一种更为简单的方法来解决我一贯通过传统的自然语言处理 (NLP) 工具和技术来解决的问题。 在某个时刻,我意识到,它

    2024年02月12日
    浏览(45)
  • 【Microsoft Azure 的1024种玩法】五十五.Azure speech service之通过JavaScript快速实现文本转换为语音

    文本转语音可使用语音合成标记语言 (SSML) 将输入文本转换为类似人类的合成语音,本篇文档主要介绍了如何通过JavaScript 的语音SDK实现文本转换为语音的实践操作 【Microsoft Azure 的1024种玩法】一.一分钟快速上手搭建宝塔管理面板 【Microsoft Azure 的1024种玩法】二.基于Azure云平

    2024年02月09日
    浏览(52)
  • 使用ML.Net轻松接入AI模型!

    ML.Net - 开源的跨平台机器学习框架 支持CPU/GPU训练 轻松简洁的预测代码 可扩展其他的机器学习平台 跨平台 Visual Studio默认安装了Model Builder插件,可以很快地进行一些通用模型类型的训练和部署,提高接入机器学习的开发效率 通过非常简单地 右键项目-添加-机器学习模型

    2024年02月06日
    浏览(38)
  • 使用.net 6.0框架的WPF应用如何引用System.Windows.Forms这个dll

    在.net 6.0的WPF应用中,想使用OpenFileDialog 这个类或者FolderBrowserDialog这个类,是无法找到System.Windows.Forms这个dll引用的,即使从系统C盘里搜索到System.Windows.Forms.dll放到项目里,也会出现异常,而无法识别WPF自带的一些初始化方法。 OpenFileDialog还好,因为他有两个命名空间都有它

    2024年02月12日
    浏览(33)
  • .NET使用一行命令轻松生成EF Core项目框架

    dotnet ef是Entity Framework Core(EF Core)的一个命令行工具,用于管理EF Core应用程序的数据库和代码。除了提供管理数据库的命令之外,dotnet ef还可以生成和管理实体和上下文代码。本文将介绍如何使用dotnet ef动态生成代码。 一、环境准备 1、项目准备 用vs2022新建一个.NET6的asp.

    2023年04月27日
    浏览(51)
  • 构建实时通信应用:使用.NET和SignalR轻松实现前沿技术

      概述: 学习.NET中使用SignalR实现实时通信功能。从安装库、创建Hub,到客户端基础功能,一步步构建实时聊天室。深入讲解分组功能,使您能够定向广播消息。简洁实用,助您轻松掌握实现创新Web应用的技能。 SignalR 是一个强大的实时通信库,为.NET应用程序提供轻松的实时

    2024年02月04日
    浏览(42)
  • 在ASP.NET Core中轻松使用JwtBeare进行身份验证

    JwtBearer简介 首先要搞清楚什么是JwtBearer,JwtBearer是ASP.NET Core的OAuth 2.0 JWT Bearer身份验证提供程序。它提供了对JWT令牌进行验证的功能,然后允许将令牌中包含的声明(claims)用于用户身份验证和授权控制。 Json Web Token (JWT)是一种Web标准,用于在不同系统间传输数据。JWT是一种

    2024年02月04日
    浏览(45)
  • .Net FrameWork 框架下使用System.Net.Mail封装类 发送邮件失败:服务器响应:5.7.1 Client was not authenticated 解决方案

    偶然兴起,想做一个后台监控PLC状态的服务。功能如下:监控到PLC状态值异常后触发邮件推送,状态改变后只推送一次。开始使用的是.net6.0开发框架开发,一切都很顺利,邮件也能正常推送。但由于现场工控机系统不是WIN10 20H2的最新版本,导致系统未安装.Net6.0 Runtime。而我

    2024年02月03日
    浏览(43)
  • 使用Newtonsoft直接读取Json格式文本(Linq to Json)

    使用 Newtonsoft.Json(通常简称为 Newtonsoft)可以轻松地处理 JSON 格式的文本。Newtonsoft.Json 是 .NET 中一个流行的 JSON 处理库,它提供了丰富的功能和灵活性。 以下是使用 Newtonsoft.Json 进行 Linq to JSON 的示例代码: 首先,你需要在项目中安装 Newtonsoft.Json 包。你可以通过 NuGet 包管理

    2024年02月16日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包