55

単語やフレーズを表示し、ユーザーがそれを読んだとき(またはその近似値)を認識できる、組み込みのビスタまたはサードパーティの音声認識エンジンを使用するアプリケーションを作成する必要があります)。また、オペレーティング システムの言語を変更せずに、言語をすばやく切り替える必要もあります。

ユーザーは非常に短期間システムを使用します。アプリケーションは、最初に認識エンジンをユーザーの声に合わせてトレーニングする必要なく動作する必要があります。

これが Windows XP 以下のバージョンの Windows Vista で動作することも素晴らしいことです。

必要に応じて、システムは、ユーザーが選択した言語で、画面上の情報をユーザーに読み上げることができる必要があります。事前に録音されたナレーションを使用してこの仕様を回避することはできますが、推奨される方法はテキスト読み上げエンジンを使用することです。

誰かが私に何かを勧めることができますか?

4

11 に答える 11

59

しばらく前に、ソフトウェアのJoelについても同様の質問がありました。System.Speech.Recognition名前空間を使用して、これを行うことができます...いくつかの制限があります。System.Speech(GACにある必要があります)をプロジェクトに追加します。WinFormsアプリのサンプルコードは次のとおりです。

public partial class Form1 : Form
{
  SpeechRecognizer rec = new SpeechRecognizer();

  public Form1()
  {
    InitializeComponent();
    rec.SpeechRecognized += rec_SpeechRecognized;
  }

  void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
  {
    lblLetter.Text = e.Result.Text;
  }

  void Form1_Load(object sender, EventArgs e)
  {
    var c = new Choices();
    for (var i = 0; i <= 100; i++)
      c.Add(i.ToString());
    var gb = new GrammarBuilder(c);
    var g = new Grammar(gb);
    rec.LoadGrammar(g);
    rec.Enabled = true;
  }

これにより、1から100までの数字が認識され、結果の数字がフォームに表示されます。lblLetterというラベルが付いたフォームが必要です。

System.Speechは、事前定義された単語またはフレーズのリストでのみ機能します。汎用性や認識品質のいずれにおいても、それは正確にNaturallySpeakingではありません。ただし、ユーザーの声に合わせてトレーニングする必要はありません。ユーザーが言うことができることがいくつかある場合は、かなりうまく機能します。そして、それは無料です!(Visual Studioを使用している場合)

非常に短いフレーズを使用すると、うまく機能しません。私は子供がアルファベットの文字を言って画面上で見るようにプログラムを作成しましたが、文字の多くが同じように聞こえるので(特に4歳の口から)、うまくいきません。

より柔軟なオプションについては...まあ、SDKを備えた前述のNaturallySpeakingがあります。しかし、それにアクセスするには営業担当者に連絡する必要があり、価格は記載されていないので、「いくらかかりますか?まあ、いくらですか?」の1つとして出くわします。ある種のもの。「ダウンロードして試してみる」オプションはないようです。:(

テキスト読み上げに関しては、System.Speech.Synthesisがこれを行います。音声認識よりもさらに簡単です。入力してEnterキーを押し、テキストを読み上げるための小さなプログラムを作成しました。私の4歳はそれに魅了されます。:)( "パパ、ダ・ウォボットにタウクしたい。")

于 2008-10-22T19:31:49.297 に答える
16

[注: 私は .NET 3.0 のマネージ音声認識 API の開発リーダーでした]

System.Speech は .NET 3.0 の一部であるため、Vista と XP の両方で使用できます。Vista では、音声認識エンジンが OS にプリインストールされているという追加の利点があります。XP では、非常に古いエンジンで SAPI 5.1 SDK を使用する (ただし、コマンド アンド コントロール シナリオでは十分に機能する可能性があります)、認識機能の新しいバージョンをインストールする Office 2003 をインストールします。いくつかの SAPI 5 準拠の音声認識エンジンも利用できます。

言語を切り替える必要がある場合は、System.Speech.Recognition.SpeechRecognitionEngine クラスを使用して、サポートする必要のある言語の SR エンジンを選択できます。エンジンは、サポートする言語のセットによって定義されることに注意してください (同じバイナリを使用し、追加の言語をサポートするためにデータ ファイルのみを交換している可能性があります)。

詳細を知る必要がある場合はコメントしてください。

フィリップ

于 2008-11-04T21:35:27.457 に答える
10

この前に「スピーチ」参照を追加します

System.Speech

10 月 22 日に Kyralessa によって投稿されたコード例は機能しませんでしたが、わずかに修正されたバージョンでは機能しました。Choices オブジェクトに文字列を追加するときは、数字ではなく全文英単語を使用してください。MS の音声認識エンジンは数字自体を認識できないようです。

これらの変更には、前の例にコメントを追加してマークを付けました。

public partial class Form1 : Form
{
  SpeechRecognizer rec = new SpeechRecognizer();

  public Form1()
  {
    InitializeComponent();
    rec.SpeechRecognized += rec_SpeechRecognized;
  }

  void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
  {
    lblLetter.Text = e.Result.Text;
  }

  void Form1_Load(object sender, EventArgs e)
  {
    var c = new Choices();

    // Doens't work must use English words to add to Choices and
    // populate grammar.
    //
    //for (var i = 0; i <= 100; i++)
    //  c.Add(i.ToString());

    c.Add("one");
    c.Add("two");
    c.Add("three");
    c.Add("four");
    // etc...

    var gb = new GrammarBuilder(c);
    var g = new Grammar(gb);
    rec.LoadGrammar(g);
    rec.Enabled = true;
  }
于 2008-11-25T05:32:37.963 に答える
7

エンジンがあなたが求めているものである場合、私は見つけました(注意してください、私はリストしているだけで、私はそれらのどれも試していません):

ルーメンボックス エンジン

Microsoft自体のSAPI SDKも持っています。私はテキスト読み上げ用にのみ試しましたが、その定義によると:

SDK には、自由に配布可能なテキスト読み上げ (TTS) エンジン (米国英語および簡体字中国語)と音声認識 (SR) エンジン(米国英語、簡体字中国語、および日本語) も含まれています。

于 2008-10-22T19:14:04.623 に答える
3

最初にトレーニングを必要としない場合、良い結果が得られないことに注意してください。音声認識は音声学の統計的応用であり、信号には非常に多くの変動があるため、誰もが他の人の言うことを理解できるのはほとんど奇跡であるという事実についてかなり率直な分野です。既成の音声認識エンジンは、英語のより一般的なアクセントになる傾向がありますが、わずかに異なるものでも惨めに失敗します。

そのため、トレーニングは非常に重要です。特に問題のあるスペースを減らす場合は、簡単に過剰適合させることでうまくいくことができます。しかし、拡張可能な機械学習ソリューションを作成しますか?そこには常に摩擦があります。

そうは言っても、Sphinx-4を考えてみてください。これは、Javaで記述された既製のソリューションであり、http://cmusphinx.sourceforge.net/sphinx4/で入手できます。

于 2008-10-22T19:23:25.757 に答える
1

.NET3.5の新しいSpeechクラスライブラリを確認してください

http://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognizer.aspx

SRおよびTTSの一般的なドキュメント

http://msdn.microsoft.com/en-us/library/system.speech.recognition.aspx http://msdn.microsoft.com/en-us/library/system.speech.synthesis.aspx

于 2008-10-22T19:21:03.720 に答える
0

Dragon NaturallySpeakingSDKは一見の価値があるかもしれません。 このプロジェクトは面白そうだった。

しかし、どちらとも遊ぶ必要はありません。

于 2008-10-22T19:17:47.627 に答える
0

テキスト読み上げは、SpeechAPIで利用できます。個人的には、おそらくVistaが必要で、System.Speech.SpeechRecognitionおよびSystem.Speech.Synthesis.TtsEngineへのマネージドインターフェイスを使用しますが、XPサポートが本当に必要な場合は、アンマネージドAPIに対してP/Invokeを使用できるはずです。

于 2008-10-22T19:22:47.490 に答える
0

さて、この質問にはすでに多くの良い回答がありますが、2016年のドキュメントからの情報を更新して、この素晴らしいコード例を指しているRob SegalとPhilipp Schmidからの回答を更新することは価値があると思います:

https://msdn.microsoft.com/en-us/library/office/system.speech.recognition.speechrecognitionengine.aspx

Windows の共有認識機能 (画面中央に表示される小さな Windows マイク) は使用せず、視覚的な合図を必要としない便利なアプリ SpeechRecognitionEngine を使用します。UI は完全に制御できます。

于 2016-07-20T00:44:54.143 に答える
0

Microsoft Speech Serverを試してみてください。これは、現在Office Communication Server 2007の一部になっていると思います。これには、SR/TTS エンジン、C# API、および Visual Studio と統合するツールが含まれています。

于 2008-11-04T21:41:52.637 に答える
0

これは、Vista 用の System.Speech API の使用について最初に説明した MSDN マガジンの記事です。ベータ版 (記事が書かれたとき) と Vista のリリースの間に API が変更されたため、一部は古くなっていますが、これは私が見つけた最高のリソースの 1 つであり、System.Speech 名前空間の優れた紹介をカバーしています。 . http://msdn.microsoft.com/en-us/magazine/cc163663.aspxを参照してください。

于 2010-06-09T18:29:35.110 に答える