VB.NET 如何使用讯飞的语音朗读?具体代码如何弄?谢谢

赤脚_码农 2018-05-23 09:30:48
想在羡慕中把文字用讯飞引擎读出来,具体怎么搞?
...全文
1629 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
赤脚_码农 2019-10-07
  • 打赏
  • 举报
回复
完全同意您的观点,整天讨论用那个语言好,整天搞一些花里胡哨的东西那是不行的。要接地气,要务实。把一切都变的简单化,才是我们编程人的首要任务。
轻鸿万里 2018-11-25
  • 打赏
  • 举报
回复
装个语音库,贴上代码就能说了
Dim instance As New SpeechSynthesizer
Dim textToSpeak As String = mc.Text
instance.Rate = 1
instance.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Child)
instance.SpeakAsync(textToSpeak)
  • 打赏
  • 举报
回复
再比如,我们可以使用 Excel 的规划功能来做大型生产企业的库存优化模型,或者使用 Microsoft.SolverFoundation.Services。 我们虽然是搞技术的,但是还是虚的太多,做实体不多。
  • 打赏
  • 举报
回复
我给你写个简单 demo,首先引用 Office 的嵌入式库
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中的巨大财富,确实需要草根来想。我们这些搞技术的人只知道整天捧着这些金饭碗在睡大觉!
  • 打赏
  • 举报
回复
如果只是朗读功能的话,Office 本身就有,用 Microsoft.Office.Interop.Excel 引用,写上一行 c# 代码,轻松地用几秒钟就能随时“说话”了。 因为这对于 c# 程序员没任何技术含量,所以从来不谈。
Tiny~ 2018-11-25
  • 打赏
  • 举报
回复
用百度AI语音合成接口,超级简单……
思考 2018-09-27
  • 打赏
  • 举报
回复
讯发开发接口是加密的,需要购买或破解,除非用网上直接转,但好像不好用
面向医学编程 2018-09-23
  • 打赏
  • 举报
回复
干嘛不用百度api啊,百度语音合成api很容易啊,而且免费的。
赤脚_码农 2018-06-02
  • 打赏
  • 举报
回复
我现在知到 是用API实现的 软件向服务器 发送一个有相关参数的网址 然后服务器会把合成的语音返回。 http://doc.xfyun.cn/rest_api/ 这是科大讯飞的 API使用说明。还有是有点看不懂。 因为从来没弄个API这个,所以相关专业术语都不懂,只能看一下别人程序是怎么写的,自己再根据这个说明来理解。
赤脚_码农 2018-06-02
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
别人也是看着相关文档编写程序的,怎么会有什么具体代码。
在网上找了N天了,难道没有人玩 语音合成?这是个很有意思的功能,让电脑开口说话,在很多软件中都是很实用的功能。不知到为何弄的人这么少 我在网上找到了这个代码,当是因为自身水平低,只能套用,不会修改,即使有文档,也不知到如何处理相关变量。谢谢指导一下。 <font style="color:rgb(38, 38, 38)"><font face="Helvetica, Arial, "">Imports System.IO Imports System.Net Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim appKey As String = "u5qjime0wVYtEiCPvYB0Srrt" Dim appSecret As String = "toEWlbx0CuIe2nx2QbwB5Xs3WyR4sbMK" 'https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHl********LT0vuXV4&client_secret=0rDSjzQ20XUj5i********PQSzr5pVw2 End Sub Public Shared Function 获取数据(ByVal url As String, ByVal data As String) As String Dim 请求 As HttpWebRequest = WebRequest.Create(url + "?" + data) 请求.Method = "GET" '获取或设置请求的方法。 Dim 流读取器 As StreamReader = New StreamReader(请求.GetResponse().GetResponseStream) Return 流读取器.ReadToEnd End Function Public Shared Function 发送数据(ByVal url As String, ByVal data As String) As String ServicePointManager.Expect100Continue = False Dim 请求 As HttpWebRequest = WebRequest.Create(url) '//Post请求方式 请求.Method = "POST" ' '获取或设置请求的方法。 '内容类型 请求.ContentType = "application/x-www-form-urlencoded" '将URL编码后的字符串转化为字节 Dim 编码 As New System.Text.UTF8Encoding() Dim 字节流 As Byte() = 编码.GetBytes(data) '设置请求的 ContentLength 请求.ContentLength = 字节流.Length '获得请 求流 Dim 新流 As Stream = 请求.GetRequestStream() 新流.Write(字节流, 0, 字节流.Length) 新流.Close() '获得响应流 Dim sr As StreamReader = New StreamReader(请求.GetResponse().GetResponseStream) Return sr.ReadToEnd End Function End Class </font></font>
赤脚_码农 2018-06-02
  • 打赏
  • 举报
回复
在网上找了一段C#代码,我已转成VB.NET 但还是有点不会弄。麻烦领导给看一看,谢谢
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
exception92 2018-06-01
  • 打赏
  • 举报
回复
别人也是看着相关文档编写程序的,怎么会有什么具体代码。
赤脚_码农 2018-06-01
  • 打赏
  • 举报
回复
难道没有人搞语音吗?

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧