16,555
社区成员
发帖
与我相关
我的任务
分享
using excel = Microsoft.Office.Interop.Excel;
然后说话var str = "您好,我是一只 Office 狗,我在" + DateTime.Now.ToString("yyyy年M月d日H点m分s秒") + "向您报时";
var app = new excel.Application();
app.Speech.Speak(str);
app.Quit();
这里只是demo。对于实际系统,则可以把 app 进程缓存起来,提高启动速度(现在是不到1秒钟,也不慢)。
Office 功能中含有巨大的财富。比如说我们可以把 Word 图文混排功能用到互联网上,用几十台服务器以及 Orleans 系统调度服务,提供给一些中介,实时地、灵活地、全系列地、全年无休止地进行排版产生格式合同,那么具有这样一个简单系统的中介公司就能凭几个现场办公的热点需求而打败对手霸占市场,至少开发这样的系统的团队能融资几百万(当然这里只是启发而已)。
所以也不是仅仅会追什么 core 之类的新鲜的但是没啥新功能的纯技术语法现象。对于这种埋藏在我们的windows平台、.net framework中的巨大财富,确实需要草根来想。我们这些搞技术的人只知道整天捧着这些金饭碗在睡大觉!Public Class BaiduTTSService
Inherits IBaiduTTSService
Public tok As String = GetBaiduToken()
Private Const lan As String = "zh" '语言
Private Const per As String = "4" '发音人选择 0位女 1位男 默认 女0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女声
Private Const ctp As String = "1" '客户端类型选择 web端为1
Private Const spd As String = "3" '范围0~9 默认 5 语速
Private Const pit As String = "4" '范围0~9 默认 5 音调
Private Const vol As String = "5" '范围0~9 默认 5 音量
Private cuid As String = Computer.GetMacAddress() '机器Mak地址
Private Const rest As String = "tex={0}&lan={1}&per={2}&ctp={3}&cuid={4}&tok={5}&spd={6}&pit={7}&vol={8}"
'' <summary>
'' tex 即:被转化的文本 可以是中英文结合体,如:hello 陈卧龙
'' </summary>
'' <param name="tex"></param>
'' <returns></returns>
Public Function GetBaiduUri(ByVal 被转化的文本 As String) As String
Dim Uri As String = "http://tsn.baidu.com/text2audio?" & String.Format(rest, 被转化的文本, lan, per, ctp, cuid, tok, spd, pit, vol)
Return Uri
End Function
''<summary>
''获取百度Token 百度Token有效请为30天
'' </summary>
''<returns></returns>
Public Shared Function GetBaiduToken() As String
''string Uri = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=你的client_id&client_secret=你的client_secret";
''string page = GetPage(Uri, "");
''string Token = GetJsonValue(page, "access_token");
Return "24.926b57f9665a644fa7b38c76c021834d.2592000.1496304195.282335-9593280"
End Function
''#region 获取网络资源
''<summary>
''获取网络资源
''</summary>
''<param name="posturl">请求的URL</param>
''<param name="postData">发送的数据</param>
''<returns>json格式的字符串</returns>
Public Shared Function GetPage(ByVal 请求的URL As String, ByVal 发送的数据 As String) As String 'json格式的字符串
''WX_SendNews news = new WX_SendNews();
''posturl: news.Posturl;
''postData:news.PostData;
Dim outstream As System.IO.Stream = Nothing
Dim instream As System.IO.Stream = Nothing
Dim sr As System.IO.StreamReader = Nothing
Dim response As System.Net.HttpWebResponse = Nothing
Dim request As System.Net.HttpWebRequest = Nothing
Dim encoding As System.Text.Encoding = System.Text.Encoding.UTF8
Dim data As Byte() = encoding.GetBytes(发送的数据)
''准备请求...
Try
''设置参数
request = TryCast(System.Net.WebRequest.Create(请求的URL), System.Net.HttpWebRequest)
Dim cookieContainer As System.Net.CookieContainer = New System.Net.CookieContainer()
request.CookieContainer = cookieContainer
request.AllowAutoRedirect = True
request.Method = "POST"
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = data.Length
outstream = request.GetRequestStream()
outstream.Write(data, 0, data.Length)
outstream.Close()
''发送请求并获取相应回应数据
response = TryCast(request.GetResponse(), System.Net.HttpWebResponse)
''直到request.GetResponse()程序才开始向目标网页发送Post请求
instream = response.GetResponseStream()
sr = New System.IO.StreamReader(instream, encoding)
''返回结果网页(html)代码
Dim content As String = sr.ReadToEnd()
Dim err As String = String.Empty
Return content
Catch ex As Exception
Dim err As String = ex.Message
Return String.Empty
End Try
End Function
''#region 获取Json字符串某节点的值
''<summary>
'' 获取Json字符串某节点的值
''</summary>
Public Shared Function GetJsonValue(ByVal jsonStr As String, ByVal key As String) As String
Dim result As String = String.Empty
If Not String.IsNullOrEmpty(jsonStr) Then
key = """" & key.Trim(""""c) & """"
Dim index As Integer = jsonStr.IndexOf(key) + key.Length + 1
If index > key.Length + 1 Then
''先截逗号,若是最后一个,截“}”号,取最小值
Dim [end] As Integer = jsonStr.IndexOf(","c, index)
If [end] = -1 Then
[end] = jsonStr.IndexOf("}"c, index)
End If
result = jsonStr.Substring(index, [end] - index)
result = result.Trim(New Char() {""""c, " "c, "'"c}) '过滤引号或空格
End If
End If
Return result
End Function
End Class