none
Windows XP 上でも動作する Speech API 5.1 の 音声認識 エンジン の 認識率 を高める方法案 アドバイスいただけると助かります。 RRS feed

  • 質問

  • 長谷川浩之です。

    Windows XP 上でも動作する Speech  API 5.1 の音声認識 エンジン の 認識率 を高める方法案 アドバイスいただけると助かります。


    Windows XP上でも動作する 無料で、ネットワーク環境を必要と死しない、音声認識エンジンを応用して、

    音声コマンド的な機能を、既存アプリケーションに、入れたいという情報で、検討の結果、

    以下となりました。

    Speech API 5.1 を、以下の、各URLにある説明に従いインストールし、

    C:\Program Files\Microsoft Speech SDK 5.1\Include 

    の中のsphelper.h

    を書き換えたら、

    C:\Program Files\Microsoft Speech SDK 5.1\Samples\VB\SimpleDict

    の中のSimpleDictVB.vbp 動きました。 VB6.0

    ○結論・質問

     ⇒マイクで、 いち に さん よん ⇒ 一 に 三 四

      と入力されたり、違う文字でる確率高く感じました。 Win XP Core2Duo 32bit 上にて実験。

      マイクは同じヘッドセットを使用し、トレーニング2回実施済み。

      ★トレーニング以外で、認識率高める方法は存在する事、ご存知なかた、おられましたら、情報くださいませんでしょうか?

       たとえば、音声認識プロファイルが、たくさんの被験者でつくったものが、無料でダンロードできるサイトがあるなど。

       どうしても、Win XP上で、ネットワーク環境なしで、利用できて、無料の音声認識エンジンというルールを守らないといけない要求です。

       Windows音声認識エンジン8.0を C#2013上で、コーディングで利用した場合と比較し。※1

      ※1 比較対象は、PCは、 i7 2コア ハイバースレッティングで4コア 選択できた高速SSD メモリ 8GB をオーナーメイド 

          2014年モデル VAIO株式会社になる前の、

          最後の Sony VAIO Fit13A(2 in 1 ノート Win 8⇒8.1に自分でアップして使用)

    -------------------------------------------------

    ○他の言語でうまく動作していない背景と、今の考え

    参照設定などうまく行なえば、VC#.NET、VC++.NET上でも

    それぞれのコードが、VisualStudio2013用に自動変換されたとしても動くと思っていましたが、

    色々エラーでうまく動いていません。

    VB6.0で、動いたので、後で必要な、VisualStudio2013のC#.NETや、VB.NETのコードに翻訳すればいいと

    考えるようにしました。

    ○上記の作業の参考URL

    <SAPI(Speech API)>
    http://so-zou.jp/software/tech/library/sapi/
    http://kougaku-navi.net/speech_reco/index.html
    http://www.microsoft.com/en-us/download/details.aspx?id=6510
    http://www.ownway.info/Blog/2011/04/spfmicrosoft-speech-sdk-51-microsoft-visual-c-2010-express.html
    http://so-zou.jp/software/tech/library/sapi/speech-sdk/
    http://denspe.blog84.fc2.com/blog-entry-167.html
    https://support.microsoft.com/ja-jp/kb/942400   //spcommon.dll vistaになくWindosw音声認識エンジン8.0は、実は動作しないと読み取れてしまう情報 2015.08.05 
    https://support.microsoft.com/ja-jp/kb/417842
    http://www8.plala.or.jp/pegasus/setup.htm
    https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/ea8785d2-a15d-4772-adf6-2a0f896ce605/speechsdk51?forum=vcgeneralja  //ほんとは、Windows音声認識エンジン8.0つかいたい...独り言

    以上です。



    2015年8月5日 6:45

回答

  • 最初に記入したSo.グループリストラ組のものです。

    なんとか、使えそうなレベルに問題解決しました。

    ・Windows XP上にて、Speech API 5.1 → 6.1

    ・トレーニングを数回

    ・文法ファイル.xml にて、音声認識エンジンの弱さをカバー、

     任天堂DSさんの脳トレの方法からインスパイア

     文法ファイル.xmlにて、強制的に認識変換したい文字列に

     補正しました。

     Julius for SAPIの方法も気になりましたが、音声プロファイルの保存場所や、

     インストーラーでコピーできるファイルなのか?

     自分の声の音声プロファイルは、他の方には、まったく意味ないのかなど、

     第3者に、インストーラーでインストールしていただき同じように再現できるのか、

     何を改善、創造しないといけないのかを模索させていただきます。

     ありがとうございました。

     ★もし、さらにいいアイデアお持ちのかた、おられましたら、記入していただけますと助かります。

    • 回答としてマーク 星 睦美 2015年9月17日 2:44
    2015年9月16日 7:54

すべての返信

  • 最初に記入の長谷川浩之です。

    WindowsXP VB6.0にて実験中です。

    拡張子.xmlの、文法ファイルという、強引に聞き取った文字列を変換するテキストファイルを

    様々なURLを参考にして、以下のように記入しました。コンパイルエラーは、出ませんが。

    文法ファイルのように、動作しない状況で、調査中です。★ご存知の方情報を返信いただけますと

    他の方も、助かります。

    関連の調査されている方の、ご参考になればと思い貼り付けさせていただきます。

    間違いあれば、ご指摘くださると助かります。

    自分の音声でトレーニングは、少し認識率上げる効果はありましたと、個人的な感想です。


    '=============================================================================
    ' This sample demonstrates how to do simple dictation in VB with SAPI 5.1.
    '
    ' It uses shared reco context object, uses the default audio input, loads in
    ' dictation grammar, sets up event handlers, and shows the recognized text in
    ' the dialog text box.
    '
    ' Note: since the text box is using system locale, it may not correctly show
    ' characters in other languages. For example, if you use Chinese Speech
    ' Recognition engine as the default engine on your English OS, the text box
    ' may show garbage even though the engine recognizes Chinese.
    '
    ' Copyright @ 2001 Microsoft Corporation All Rights Reserved.
    '
    '=============================================================================

    Option Explicit

    'Imports System.IO
    'Imports SpeechLib


    Dim WithEvents RecoContext As SpSharedRecoContext
    Dim Grammar As ISpeechRecoGrammar

    Dim m_bRecoRunning As Boolean
    Dim m_cChars As Integer






    Private Sub Form_Load()
        SetState False
        m_cChars = 0
        

            
    End Sub


            
    Private Sub btnStart_Click()
        Debug.Assert Not m_bRecoRunning
        
        ' Initialize recognition context object and grammar object, then
        ' start dictation
        

        
        If (RecoContext Is Nothing) Then
            Debug.Print "Initializing SAPI reco context object..."
            
            '音声認識準備
            Set RecoContext = New SpSharedRecoContext
            Set Grammar = RecoContext.CreateGrammar(1)
            
            '2015.08.05 文法ファイルを作成追加すると、認識率上がる情報URLより★1
            'http://www2.ipcku.kansai-u.ac.jp/~hisamoto/cognition/ExcelVBA3.pdf
            
            '文法ファイルの読み込み(追加コード2015.08.05★1)
            'Dim RcgGrammar As SpeechLib.ISpeechRecoGrammar
            Dim GrammarFile As String
            GrammarFile = "C:\Program Files\Microsoft Speech SDK 5.1\Samples\(2015.08.05-3)Dictionaly.xml"

            '実行時に文法規則を修正したり変更したりする場合はSLODynamicを指定し
            'このブロックエラー出るため省略
            'SpeechLib.ISpeechRecoGrammar.RcgGrammar.CmdLoadFromFile GrammarFile, SpeechLib.SpeechLoadOption.SLODynamic
            'それ以外の場合はSLOStaticを指定します。省略した場合は , SLOStaticが指定されたものとみなされます。
            '省略した場合は,SLOStaticが指定されたものとみなされます。ですから,このパラメータは省略しても構いません。
            'RcgGrammar.CmdLoadFromFile GrammarFile, SpeechLib.SpeechLoadOption.SLOStatic
            'Grammar.CmdLoadFromFile GrammarFile, SpeechLib.SpeechLoadOption.SLOStatic
         
            Grammar.CmdLoadFromFile GrammarFile, SLOStatic
            
        End If
        
        '音声認識開始
        Grammar.DictationSetState SGDSActive
        SetState True
    End Sub

    Private Sub btnStop_Click()
        Debug.Assert m_bRecoRunning
        Grammar.DictationSetState SGDSInactive
        SetState False
    End Sub

    ' This function handles Recognition event from the reco context object.
    ' Recognition event is fired when the speech recognition engines recognizes
    ' a sequences of words.
    Private Sub RecoContext_Recognition(ByVal StreamNumber As Long, _
                                        ByVal StreamPosition As Variant, _
                                        ByVal RecognitionType As SpeechRecognitionType, _
                                        ByVal Result As ISpeechRecoResult _
                                        )
        Dim strText As String
        strText = Result.PhraseInfo.GetText
        Debug.Print "Recognition: " & strText & ", " & _
            StreamNumber & ", " & StreamPosition
        
        ' Append the new text to the text box, and add a space at the end of the
        ' text so that it looks better
        txtSpeech.SelStart = m_cChars
        txtSpeech.SelText = strText & " "
        m_cChars = m_cChars + 1 + Len(strText)
    End Sub

    ' This function handles the state of Start and Stop buttons according to
    ' whether dictation is running.
    Private Sub SetState(ByVal bNewState As Boolean)
        m_bRecoRunning = bNewState
        btnStart.Enabled = Not m_bRecoRunning
        btnStop.Enabled = m_bRecoRunning
    End Sub

    -------------------前回の記入--------------

    長谷川浩之です。

    Windows XP 上でも動作する Speech  API 5.1 の音声認識 エンジン の 認識率 を高める方法案 アドバイスいただけると助かります。


    Windows XP上でも動作する 無料で、ネットワーク環境を必要と死しない、音声認識エンジンを応用して、

    音声コマンド的な機能を、既存アプリケーションに、入れたいという情報で、検討の結果、

    以下となりました。

    Speech API 5.1 を、以下の、各URLにある説明に従いインストールし、

    C:\Program Files\Microsoft Speech SDK 5.1\Include 

    の中のsphelper.h

    を書き換えたら、

    C:\Program Files\Microsoft Speech SDK 5.1\Samples\VB\SimpleDict

    の中のSimpleDictVB.vbp 動きました。 VB6.0

    ○結論・質問

     ⇒マイクで、 いち に さん よん ⇒ 一 に 三 四

      と入力されたり、違う文字でる確率高く感じました。 Win XP Core2Duo 32bit 上にて実験。

      マイクは同じヘッドセットを使用し、トレーニング2回実施済み。

      ★トレーニング以外で、認識率高める方法は存在する事、ご存知なかた、おられましたら、情報くださいませんでしょうか?

       たとえば、音声認識プロファイルが、たくさんの被験者でつくったものが、無料でダンロードできるサイトがあるなど。

       どうしても、Win XP上で、ネットワーク環境なしで、利用できて、無料の音声認識エンジンというルールを守らないといけない要求です。

       Windows音声認識エンジン8.0を C#2013上で、コーディングで利用した場合と比較し。※1

      ※1 比較対象は、PCは、 i7 2コア ハイバースレッティングで4コア 選択できた高速SSD メモリ 8GB をオーナーメイド 

          2014年モデル VAIO株式会社になる前の、

          最後の Sony VAIO Fit13A(2 in 1 ノート Win 8⇒8.1に自分でアップして使用)

    -------------------------------------------------

    ○他の言語でうまく動作していない背景と、今の考え

    参照設定などうまく行なえば、VC#.NET、VC++.NET上でも

    それぞれのコードが、VisualStudio2013用に自動変換されたとしても動くと思っていましたが、

    色々エラーでうまく動いていません。

    VB6.0で、動いたので、後で必要な、VisualStudio2013のC#.NETや、VB.NETのコードに翻訳すればいいと

    考えるようにしました。

    ○上記の作業の参考URL

    <SAPI(Speech API)>
    http://so-zou.jp/software/tech/library/sapi/
    http://kougaku-navi.net/speech_reco/index.html
    http://www.microsoft.com/en-us/download/details.aspx?id=6510
    http://www.ownway.info/Blog/2011/04/spfmicrosoft-speech-sdk-51-microsoft-visual-c-2010-express.html
    http://so-zou.jp/software/tech/library/sapi/speech-sdk/
    http://denspe.blog84.fc2.com/blog-entry-167.html
    https://support.microsoft.com/ja-jp/kb/942400   //spcommon.dll vistaになくWindosw音声認識エンジン8.0は、実は動作しないと読み取れてしまう情報 2015.08.05 
    https://support.microsoft.com/ja-jp/kb/417842
    http://www8.plala.or.jp/pegasus/setup.htm
    https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/ea8785d2-a15d-4772-adf6-2a0f896ce605/speechsdk51?forum=vcgeneralja  //ほんとは、Windows音声認識エンジン8.0つかいたい...独り言

    以上です。





    2015年8月6日 4:09
  • 最初に記入したSo.グループリストラ組のものです。

    なんとか、使えそうなレベルに問題解決しました。

    ・Windows XP上にて、Speech API 5.1 → 6.1

    ・トレーニングを数回

    ・文法ファイル.xml にて、音声認識エンジンの弱さをカバー、

     任天堂DSさんの脳トレの方法からインスパイア

     文法ファイル.xmlにて、強制的に認識変換したい文字列に

     補正しました。

     Julius for SAPIの方法も気になりましたが、音声プロファイルの保存場所や、

     インストーラーでコピーできるファイルなのか?

     自分の声の音声プロファイルは、他の方には、まったく意味ないのかなど、

     第3者に、インストーラーでインストールしていただき同じように再現できるのか、

     何を改善、創造しないといけないのかを模索させていただきます。

     ありがとうございました。

     ★もし、さらにいいアイデアお持ちのかた、おられましたら、記入していただけますと助かります。

    • 回答としてマーク 星 睦美 2015年9月17日 2:44
    2015年9月16日 7:54