运维开发网

C实现文本到语音的功能

运维开发网 https://www.qedev.com 2022-04-30 15:59 出处:网络
这篇文章主要为大家详细介绍了C#实现文本转语音功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

这篇文章主要为大家详细介绍了C#实现文本转语音功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

由于近期工作需要文字转语音的功能,网上找到的资料有些不全,特此记录下完整的全部功能。

这种方式的好处是不会受到浏览器的限制。在js的文本转语音功能中,谷歌更高版本的浏览器会屏蔽通过模拟点击的自动播放,而ie不会。

一.确认研发环境

操作系统:win10或者win7(我自己用的是win10。据说win7的一些阉割版会报错)

IDE:VS2012(可以高于此版本)

。NET framework 4.0(可以比这个版本更高)

二.系统自带语音识别功能

1.c: \ windows文件夹中有语音。

2.控制面板有语音识别功能


三.DLL引用

1.选择要使用此功能的程序,然后右键单击quot添加引用

2.选择quot程序集quot-quot;Quot系统下的框架。演讲


四.代码

请注意:

1.该页需要设置为异步。


2.通过代理调用以阻止页面响应。

3.页面代码如下:

aspx:

lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="yy.aspx.cs" Inherits="yy" Async="true" %gt;?lt;!DOCTYPE htmlgt;?lt;html xmlns="http://www.w3.org/1999/xhtml"gt;lt;head id="Head1" runat="server"gt;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/gt;? ? lt;titlegt;文字转语音测试lt;/titlegt;lt;/headgt;lt;bodygt;? ? lt;form id="form1" runat="server"gt;? ? lt;divgt;? ? lt;asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /gt;? ? lt;/divgt;? ? ? ??? ? lt;/formgt;lt;/bodygt;lt;/htmlgt;

aspx.cs:

using System;using System.Collections.Generic;using System.Globalization;using System.Linq;using System.Speech.Synthesis;using System.Threading.Tasks;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;?public partial class yy : System.Web.UI.Page{? ? protected void Page_Load(object sender, EventArgs e)? ? {?? ? }? ? /// lt;summarygt;? ? /// 文字转语音? ? /// lt;/summarygt;? ? /// lt;param name="content"gt;语音内容lt;/paramgt;? ? delegate void MyDelegate(string content);? ? string content = "有新的订单,请及时处理";? ? SpeechSynthesizer synthesizer = new SpeechSynthesizer(); //点击开始按钮??? ? //开始朗读? ? private void speakParagh(string text)? ? {? ? ? ? synthesizer.Speak(text);? ? }?? ? //朗读结束后释放资源?? ? private void Completed(IAsyncResult result)? ? {? ? ? ? synthesizer.SpeakAsyncCancelAll();? ? }?? ? protected void Button1_Click(object sender, EventArgs e)? ? {? ? ? ? try? ? ? ? {? ? ? ? ? ? MyDelegate myDelegate = new MyDelegate(speakParagh); //异步调用委托?? ? ? ? ? ? myDelegate.BeginInvoke(content, new AsyncCallback(Completed), null); //在启动异步线程后,主线程可以继续工作而不需要等待? ? ? ? }? ? ? ? catch (Exception ex)? ? ? ? {? ? ? ? ? ? Console.WriteLine("报错:" + ex.Message);? ? ? ? }? ? }???}

这就是本文的全部内容。希望对大家的学习有帮助,也希望大家能支持一下搜源网。


0

精彩评论

暂无评论...
验证码 换一张
取 消