どなたかお願いします。
C# フォームアプリケーションで音声認識をし、その認識結果と読むべきテキストが一致していたらハイライト表示されるようにしております。
現在、テキストがすべてひらがななのですが、音声結果が漢字やカタカナだと同じ語句でも一致してくれません。
ひらがな変換など参考にしたのですがうまくいきません。
例)テキスト語句「あした」→認識「明日」 で一致しない。
また、認識結果とテキストが一致された後、ずっとハイライトされたままで新たに更新されています。
理想としては、今読んだ場所をハイライトなので履歴を消したいです。
何かアドバイスあればよろしくお願いします。。。
以下ソースコードの関連部分です。
//音声認識
recognizer.SetInputToDefaultAudioDevice();
recognizer.LoadGrammar(new DictationGrammar());
//連続認識の開始
recognizer.RecognizeAsync(RecognizeMode.Multiple);
recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(Recognizer_Recognized);
//テキストを読み込む
private void button1_Click(object sender, EventArgs e)
{
if (sender == button1)
{
OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "テキストファイル|*.txt"; if (ofd.ShowDialog() == DialogResult.OK) { StreamReader sr = new StreamReader(ofd.FileName, Encoding.GetEncoding("SHIFT_JIS")); richTextBox1.Text = sr.ReadToEnd(); } } }
//認識結果とテキストの一致検索
private void Recognizer_Recognized(object sender, SpeechRecognizedEventArgs e)
{
//色を変える文字列
string searchWord = e.Result.Text;
//現在の状態 int currentSelectionStart = richTextBox1.SelectionStart; int currentSelectionLength = richTextBox1.SelectionLength; int pos = 0; for(; ; ) { // 文字列を検索して、選択状態にする pos = richTextBox1.Find(searchWord, pos, RichTextBoxFinds.None); if(pos < 0) { break; } //背景色を黄色にする richTextBox1.SelectionBackColor = Color.Yellow; pos++; } //選択状態を元に戻す richTextBox1.Select(currentSelectionStart, currentSelectionLength);
回答1件
あなたの回答
tips
プレビュー