语音到文本vb.net,语音到文本转换

vb.net怎么做中文语音识别程序

首先添加一个系统的语音COM组件的引用microsoft speech object library然后在程序中声明一个语音类dim RC As SpeechLib.SpSharedRecoContext这个类有一些事件,如果你要处理它的一些事件,可以用withevent来声明然后在窗体LOAD事件或你需要的地方先创建一个实例RC = New SpeechLib.SpSharedRecoContext当一个RC被实例化后,系统就会运行语音识别程序.前提是你的系统已经正确安装这个功能.一般默认就已经安装好的.其次提醒一下,WIN7的语音识别比XP的好N倍.从阅读到侦听都好很多.然后就可以在你需要阅读的地方使用RC.Voice.Speak("hello 我", 11)11那里是一些枚举,用来标识系统用前台还是后台或其他方式来阅读文字,简单的来说就是阅读的时候不会卡住你的程序.你可以选其他的枚举来试试作用.以上为阅读部分.如果需要程序听你说话,则需要声明一个侦听类dim RG As SpeechLib.ISpeechRecoGrammar在初始化时将之与上面的RC建立关系,此时则必须要用withevent来声明上面的RC,因为涉及电脑听到你的语音后,会触发一个事件,并将听到的内容传递到该事件.其次,要让系统听到的解析为命令,就必须准备一个XML结构的文件来保存那些固定的命令.如果电脑在XML文件中找不到那些固定命令或同时不属于系统命令,电脑将会将其解释为听写.RG = RC.CreateGrammar '(0)

你所需要的网站建设服务,我们均能行业靠前的水平为你提供.标准是产品质量的保证,主要从事成都网站设计、网站建设企业网站建设、成都手机网站制作、网页设计、成都品牌网站建设、网页制作、做网站、建网站。创新互联拥有实力坚强的技术研发团队及素养的视觉设计专才。

RG.CmdLoadFromFile("听到.xml", SpeechLib.SpeechLoadOption.SLODynamic)

RG.CmdSetRuleIdState(0, SpeechLib.SpeechRuleState.SGDSActive)然后写一个过程来处理听到的事件Private Sub 听到命令(ByVal StreamNumber As Integer, ByVal StreamPosition As Object, ByVal RecognitionType As SpeechLib.SpeechRecognitionType, ByVal 话语 As SpeechLib.ISpeechRecoResult) Handles RC.Recognition RC.Voice.Speak("我听到了" 话语.PhraseInfo.GetText, 11)End Sub以上为侦听部分.下面列一个XML的例文?xml version="1.0" encoding="gb2312"?

GRAMMAR LANGID="804"

RULE NAME="命令" TOPLEVEL="ACTIVE"

L

P打开播放器

P上我的QQ

P关闭你自己 /L

/RULE

/GRAMMAR要让系统正确地侦听到你说的话,前提你必须运行语音识别程序并让其激活到"正在聆听"状态.并且你必须有一个能正常使用的话筒而且保证话筒已经打开.(废话-_-|||)以上就是用VB.NET语音识别的最基本的一些操作.希望对你有帮助.更深入的内容有兴趣的话可以和我一起研究.

.net怎样把语音转换成文本呀,求指教,非常感谢

微软研究院的那帮牛人们不是吃白食的,现在这门高深的技术已经不再那么遥不可及了。

如果是.NET Framework 4.0的环境,请翻阅一下关于这个命名空间的MSDN文档

System.Speech.Recognition

不过先要搞清楚一些基本概念才能开始动手编程。开始语音识别前要先初始化声音输入设备,设定“语言”(地区代码),设定“语法”(识别规则),等等。

Windows 7 预装了中文语音识别引擎

一下是示例代码:

using System;

using System.Speech.Recognition;

namespace SpeechRecognitionApp

{

class Program

{

static void Main(string[] args)

{

// Create an in-process speech recognizer for the en-US locale.

using (

SpeechRecognitionEngine recognizer =

new SpeechRecognitionEngine(

new System.Globalization.CultureInfo("en-US")))

{

// Create and load a dictation grammar.

recognizer.LoadGrammar(new DictationGrammar());

// Add a handler for the speech recognized event.

recognizer.SpeechRecognized +=

new EventHandlerSpeechRecognizedEventArgs(recognizer_SpeechRecognized);

// Configure input to the speech recognizer.

recognizer.SetInputToDefaultAudioDevice();

// Start asynchronous, continuous speech recognition.

recognizer.RecognizeAsync(RecognizeMode.Multiple);

// Keep the console window open.

while (true)

{

Console.ReadLine();

}

}

}

// Handle the SpeechRecognized event.

static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)

{

Console.WriteLine("Recognized text: " + e.Result.Text);

}

}

}

如果是.NET4, Windows 7之前的环境,可以安装Microsoft Speech SDK 5.1

vb.net文字转语音

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim s As Object

s = CreateObject("sapi.spvoice")

s.speak("speak")

End Sub

VB如何实现传输语音和文件,我想做个聊天工具

传输语音和文件都可以通过Mswinsock 实现,只是速度方面我没有试过,我正巧最近也弄了点Mswinsock 相关的东西,代码发给你看看,希望有帮助

传送文件对于网络编程来说是基本的功能,比如远程控制软件。在编制一个软件时,我从网上下了很多传文件的程序,这些程序提供的传文件功能根本就不能用。传文本还可以,传二进制文件根本就不行。因此,作为一个基本的功能模块,有必要单独介绍一下。

首先,在VB中要传送字符串,你可以这样写:

Dim strData As String

strData = "Test"

Winsock1.SendData strData

但是如果你传送的二进制文件,你还能用String变量来存放吗?从理论上分析是不行的,我也做了实验,确实是不行的。文件虽然可以传,但是接受的文件和发送的不一样,原因可能是二进制文件里可以有任何"字符",但是不是所有的字符都可以放在String变量里。

除了String类型的变量,VB中其他类型的变量都只有几个字节长,难道一次只能发几个字节吗?那样岂不是要累死机器了!其实,情况没有那么悲观,我们完全可以使用数组来解决这个问题,就是使用byte数组。把要传送的文件都读到数组里,然后发送出去。程序如下:

FileName 为要传送的文件名,WinS为发送文件的WinSock控件。这是一个发送端的程序。

Public Sub SendFile(FileName As String, WinS As Winsock)

Dim FreeF As Integer ''空闲的文件号

Dim LenFile As Long ''文件的长度

Dim bytData() As Byte ''存放数据的数组

FreeF = FreeFile ''获得空闲的文件号

Open FileName For Binary As #FreeFile ''打开文件

DoEvents

LenFile = LOF(FreeFile) ''获得文件长度

ReDim bytData(1 To LenFile) ''根据文件长度重新定义数组大小

Get #FreeFile, , bytData ''把文件读入到数组里

Close #FreeFile ''关闭文件

WinS.SendData bytData ''发送数据

End Sub

接受端的程序如下:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim bytData() As Byte

Dim f

f = FreeFile

Open strFileName For Binary As #f

ReDim bytData(1 To bytesTotal)

Winsock1.GetData bytData

Put #f, i, bytData

i = i + bytesTotal ''保证每次写都是在文件的末尾, i是个全局变量

Close #f

End Sub

这里有两个需要注意的地方,ReDim Preserve bytData(1 To LenFile),下标是从1开始的,如果你写成ReDim bytData( LenFile),下标就是从0开始了,数组就有LenFile+1长了。LenFile = LOF(FreeFile)中的LOF是获得文件长度的函数,是VB里带的,我见过很多例子用API,或者循环的读直到末尾来获取文件长度,这样都是很麻烦的,使用LOF函数就可以了。

这样的程序,即可以传送文本文件,也可以传送二进制文件。但是你有没有发现这个程序的问题呢?如果我要传送一个50M的文件呢?系统可以为bytData分配50M的内存空间吗?

于是笔者拿一个50M的文件做实验吧,接收到的文件和原来的文件不一样,比原来的大。问题出在那呢?

首先,根据文件大小重新定义bytData数组的大小本身就有问题,系统是不可能无限制的给数组分配空间的,即使可以,也会造成系统响应变慢。在传50M文件的时候,系统就跟死机了一样。那么怎么解决这个问题呢,一个自然的想法就是把数据分段传送。程序如下:

发送程序, iPos是个全局变量,初始值为0。这个变量保存着当前数据的位置。Const iMax = 65535是每个数据块的大小。

Dim FreeF As Integer ''空闲的文件号

Dim LenFile As Long ''文件的长度

Dim bytData() As Byte ''存放数据的数组

FreeF = FreeFile ''获得空闲的文件号

Open FileName For Binary As #FreeF ''打开文件

DoEvents

LenFile = LOF(FreeF) ''获得文件长度

If LenFile = iMax Then ''如果要发送的文件小于数据块大小,直接发送

ReDim bytData(1 To LenFile) ''根据文件长度重新定义数组大小

Get #FreeF, , bytData ''把文件读入到数组里

Close #FreeF ''关闭文件

WinS.SendData bytData ''发送数据

Exit Sub

End If

''文件大于数据块大小,进行分块发送

Do Until (iPos = (LenFile - iMax)) ''发送整块数据的循环

ReDim bytData(1 To iMax)

Get #FreeF, iPos + 1, bytData

WinS.SendData bytData

iPos = iPos + iMax ''移动iPos,使它指向下来要读的数据

Loop

''这里要注意的是,必须检查文件有没有剩下的数据,如果文件大小正好等于数据块大小的

'' 整数倍,那么就没有剩下的数据了

ReDim bytData(1 To LenFile - iPos) ''发送剩下的不够一个数据块的数据

Get #FreeF, iPos + 1, bytData

WinS.SendData bytData

Close #FreeF

下面是接收端的程序:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim bytData() As Byte

Dim lLenFile As Long

Dim f

f = FreeFile

Open strFileName For Binary As #f ''strFileName是文件名

lLenFile = LOF(f)

ReDim bytData(1 To bytesTotal)

Winsock1.GetData bytData

If lLenFile = 0 Then ''lLenFile=0表示是第一次打开文件,这里有个问题,就是''如果如果该文件存在的话,就会出错,应该在打开前检查文件是否存在。(这里我省略了)

Put #f, 1, bytData

Else

Put #f, lLenFile + 1, bytData

End If

Close #f

End Sub

怎样在VB中,实现向文本框的语音输入

我的理解是这样的:

我们的目的:向文本框输入语音文字

操作过程就得分两步:

一:获取语音文字进行存储

二:将语音文字写入文本框

这样实施起来你就有了明确的操作过程。

语音识别这方面的技术我现在没有,你可以在网上查找相应的技术或者购买相应的技术,只要将语音转换成了文字,相信再写入文本框你就可以很简单的操作了

怎么把语音转换成文本?

你好,怎么把语音转换成文本?可以这样做哦,简单又高效。

具体步骤

第一步,在操作界面左侧两个功能栏目选择“语音转文字”。

第二步,将录音文件拖拽至虚线框处或点击“添加文件”在弹出窗口将其添加进来。

第三步,在闪电文字语音转换软件界面右方“设置”选项根据录音文件设置“识别语种”以及“输出文档格式”,这里根据录音文件设置为“识别中文”以及“TXT”文档格式。

第四步,点击“输出目录”中的“自定义”,打开文件夹设置储存位置。

第五步,点击“开始转换”按钮,待转换进度为100%时即可。

当前文章:语音到文本vb.net,语音到文本转换
文章地址:https://www.cdcxhl.com/article48/hshchp.html

成都网站建设公司_创新互联,为您提供动态网站品牌网站制作网站内链响应式网站关键词优化网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设