| 网站首页 | VB.Net实例分析 | .Net技术文摘 | 下载中心 | VB.Net书籍笔记 | .Net源码 | VBS脚本与组件调用 | Windows2008技术文摘 | 给我们留言 | 
最新公告:

  没有公告

您现在的位置: 乐博网 >> VB.Net实例分析 >> 外接设备编程 >> 实例分析正文
最新推荐 更多内容
语音API 和语音识别功能(VB2010实例)
语音API 和语音识别功能(VB2010实例)
作者:Akyao    来源:乐博网收集     更新时间:2011-4-23

本文演示语音API 和语音识别功能,来自乐博网。

如果你想下载本文的源代码RAR压缩集合包  请访问
VB2010源代码集合包(芋头糕)    http://www.lob.cn/code/utility/2795.shtml
特别感谢网友 芋头糕 将此资源提供乐博网分享,欢迎加入 40797788 的.Net超级qq群交流。

语音API 和语音识别功能的实例代码如下:

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.Diagnostics

'Note use of Interop wrapper
Imports SpeechLib

Partial Public Class Form1
    Inherits Form
    'The Speech recognizer
    Dim recognizer As SpInprocRecognizer

    'The grammar that we're recognizing
    Dim grammar As ISpeechRecoGrammar

    'The filestream containing the speec
    Dim fileStream As SpFileStream

    'The recognizer context
    Dim WithEvents speechRecoContext As SpInProcRecoContext

    Sub openWAVToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles OpenwavToolStripMenuItem.Click
        'Standard dialog
        Dim ofd As OpenFileDialog = New OpenFileDialog()

        'Restrict dialog to .WAV files   '更多.net源代码 来自乐博网lob.cn

        ofd.DefaultExt = ".wav"
        ofd.Filter = "Wav files (.wav)|*.wav"
        'N.B.: 1-based index!
        ofd.FilterIndex = 1

        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            'Transcribe selected .WAV file
            TranscribeAudioFile(ofd.FileName)
        End If
    End Sub

    Sub exitToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ExitToolStripMenuItem.Click
        Application.Exit()
    End Sub

    Sub TranscribeAudioFile(ByVal fName As String)
        'Create the recognizer
        recognizer = New SpInprocRecognizer()

        'Recognize the speec in the file that we passed in
        fileStream = New SpFileStream()
        fileStream.Open(fName, SpeechStreamFileMode.SSFMOpenForRead, True)
        recognizer.AudioInputStream = fileStream

        'Create a recognition context
        speechRecoContext = CType(recognizer.CreateRecoContext(), SpInProcRecoContext)

        'Create standard grammar
        grammar = speechRecoContext.CreateGrammar(10)
        Try
            'Begin recognition as soon as dictation (in this case, file playback) is begun
            grammar.DictationSetState(SpeechRuleState.SGDSActive)
        Catch ce As System.Runtime.InteropServices.COMException
            Debug.WriteLine(ce.ToString())
        End Try
    End Sub

    'This will be called many times, as data is analyzed
    Sub OnHypothesis(ByVal StreamNumber As Integer, ByVal StreamPosition As Object, ByVal Result As ISpeechRecoResult) Handles speechRecoContext.Hypothesis
        SyncLock Me
            Dim info As ISpeechPhraseInfo = Result.PhraseInfo
            'You could, of course, store this for further processing / analysis
            Dim el As ISpeechPhraseElement
            For Each el In info.Elements
                Debug.WriteLine(el.DisplayText)
            Next
            Debug.WriteLine("--Hypothesis over--")
        End SyncLock
    End Sub

    'This will be called once, after entire file is analyzed
    Private Sub OnRecognition(ByVal StreamNumber As Integer, ByVal StreamPosition As Object, ByVal RecognitionType As SpeechRecognitionType, ByVal Result As ISpeechRecoResult) Handles speechRecoContext.Recognition
        Dim phraseInfo As ISpeechPhraseInfo = Result.PhraseInfo
        'The best guess at the completely recognized text
        Dim s As String = phraseInfo.GetText(0, -1, True)
        RichTextBox1.AppendText(s)

        'Or you could look at alternates. Here, request up to 10 alternates from index position 0 considering all elements (-1)
        Dim alternate As ISpeechPhraseAlternate
        For Each alternate In Result.Alternates(10, 10, -1)
            Dim altResult As ISpeechRecoResult = alternate.RecoResult
            Dim altInfo As ISpeechPhraseInfo = altResult.PhraseInfo
            Dim altString As String = altInfo.GetText(0, -1, True)
            Debug.WriteLine(altString)
        Next
    End Sub

    Private Sub OnAudioStreamEnd(ByVal StreamNumber As Integer, ByVal StreamPosition As Object, ByVal someBool As Boolean) Handles speechRecoContext.EndStream
        'Stop recognition
        grammar.DictationSetState(SpeechRuleState.SGDSInactive)
        'Unload the active dictation topic
        grammar.DictationUnload()
    End Sub

End Class

  • 上一篇:

  • 下一篇: 没有了
  • 【字体: 】【打印此文】【关闭窗口
      相关文章:(只显示最新16条)
    设置文本识别的内置识别器(VB2010实例)
    管理计算机电源状态的类(VB2010实例)
    Tablet PC 上可用的文本识别选项(VB2010实例)
    Tablet PC 2005 中对笔势的系统识别(VB2010实例)
    自定义数据控件(VB2010实例)
    Tablet PC 2005 的区分上下文功能(VB2010实例)
    响应数字化仪触笔背面的橡皮擦(VB2010实例)
    WMI编程实例(VB2010实例)
    系统服务管理实例(VB2010实例)
    进程管理(VB2010实例)
    显示进程组成模块(VB2010实例)
    任务管理器编程(VB2010实例)
    性能计数器编程(VB2010实例)
    消息队列MSMQListener(VB2010实例)
    消息队列MSMQClient(VB2010实例)
    写入事件日志(VB2010实例)

    | 设为首页 | 加入收藏 | 联系站长 | | 友情链接 | 版权申明 |
    乐博网欢迎各种媒体转载我们的原创作品[转载请注明出处];我们鼓励更多VB.Net开发者一起加入研究与探讨;如发现文章访问错误、内容错误或版权疑问、内容有违相关法律(如涉及政治、色情、反动或散布虚假有害信息)等情况,请及时向我们举报,我们将及时纠正!
    联系邮箱:Shiny#vip.qq.com (#替换为@) QQ交流群: 40797788 [闽ICP备05014267号]