2016-08-23 14 views
1

私は自分のアプリケーションで(SAPI)オブジェクトを使用します。ただし、その機能を実行するたびに、音声は実行されますが、音声が終了するまで、アプリケーションのパフォーマンス(他のすべて)は一時停止します。私はそれがこのSpeaking-Objectの優先順位と関係があるのだろうかと思います。コードの残りの部分が最初に実行されるまで何とかそれを下げることができますか? o_OSAPI実行優先

Private Function Lara(ByVal script As String) As Object 
    Lara = CreateObject("SAPI.spvoice") 
    Lara.Voice = Lara.GetVoices.Item(1) 
    Return Lara.speak(script) 
End Function 

Private Sub Test_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Logo.Visible = True 
    Logo.Image = ResizeImage(My.Resources.Spell) 
    Lara("Welcome") 
End Sub 

フォームとそのロゴを読み込んだ後に「歓迎」と言うことができますか?

ありがとうございます。


Ms. Lesley Gushurstのおかげで、音声はコードオーダー(アプリケーションが表示され、ロゴが表示され、次に音声)に従って実行されます。解決策は、 "Microsoft Speech Object Library"という名前のプロジェクトに(com-reference)を追加してからコードにインポートすることでした。

Imports SpeechLib 

Private Sub Test_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Logo.Visible = True 
     Logo.Image = My.Resources.Spell 
     Dim Lara = CreateObject("SAPI.spvoice") 
     Lara.Voice = Lara.GetVoices.Item(1) 
     Lara.speak("Welcome", SpeechVoiceSpeakFlags.SVSFlagsAsync) 'It's declared now! 
End Sub 
+0

[** Form.Shownイベント**](https://msdn.microsoft.com/en-us/library/system.windows.forms.form.shown(v = vs.110).aspxを参照してください。 )、しかし、それがブロッキング呼び出しの場合、別のスレッドでこれを実行したいかもしれません。 –

+0

ありがとう、ヴィンセント氏。しかし、私の質問は、一般的にSAPIの優先順位を下げることです。したがって、SHOWNイベントハンドラはそれを達成しません。 – Sky7ure

+0

コード実行に関しては、「優先度」などはありません。これは、同期、非同期またはマルチスレッドの同期/非同期のいずれかです。 –

答えて

0

あなたはMSDNのドキュメントSpVoice Speak methodを見てみるならば、それは同期音声は、アプリケーションで使用されている場合は、音声が話している間

」は、アプリケーションの 実行がブロックされていることを述べ、及びユーザー複雑なユーザーの操作が意図されている場合は、 が効果的にロックアウトされます。 アプリケーションまたはグラフィカルユーザーインターフェイス(GUI)を使用しない場合は受け入れることができますが、非同期通信の場合は通常 が適切です。

ですから、SVSFlagsAsyncが設定された状態で話を呼び出すことを検討してください。今のところあなたの処刑はブロックされています。

私はあなたのコードは次のようになり思っている:私は私はそれが簡単だった望む

Lara.speak(script, SpeechVoiceSpeakFlags.SVSFlagsAsync) 
+0

ありがとうございました!それでも、関数の戻り値の中で使用すると、(SpeechVoiceSpeaFlags)が宣言されていないことがわかります。私はどのようにしてEnumを正確に宣言できますか?それを呼び出す前に? – Sky7ure

+0

このウェブサイトは、あなたが探しているものの実例を持っているようですhttp://vbcity.com/forums/t/166589.aspx ...私は通常VBで作業しませんが、私はそれをさらに調べることができる問題を抱えています。 –

+0

Wowser!出来た。それは、プロジェクトの参照に「Microsoft Speech Object Library」を追加した後、メインクラスの前にそれを「インポート」することでした。優しくありがとうございます、レスリーさん。^_ ^ – Sky7ure

0

。私は読み上げるテキストに埋め込まれた声に応じてオンザフライで音声を鳴らします。あまりにも多くの人々がそうしようとしているわけではないことを知っています。

マイアプリは、チャプターやストーリーを話すライターのためのVisual Basic(VS2010)の音声編集ツールであるため、作成者は、どのキャラクターが話しているかに応じて、男性または女性の声でタイプミス、インコヒーレントな文章などを聞くことができます。今私は利用可能な声は7つしかありませんが、一度に12と22の異なる文字が割り当てられています。

Windows 7,8および8.1では問題なく動作しましたが、大きな問題が発生しました。

私が最終的にそれを動作させると、コードを利用できるようにします。