音声認識で使用するためのemacs拡張機能を作成しています。特定の機能に関するヘルプを探しています。音声認識エンジン(Dragon)が一貫して認識できない単語もあります。何回訓練してもかまいませんが、特定の単語を認識するのは簡単ではありません。通常、トピックについて書いているときやコーディングしているときは、同じ単語を何度も何度も使用します。
そのため、オーバーレイを使用して、バッファ内の単語のレンダリング方法を変更するモードを作成しました。単語にランダムな文字を使用し、ランダムな色で下線を引き、その上にランダムな発音区別符号(アクセント、ウムラウトなど)を付けます。以下にスクリーンショットを示します(おそらく、マーク/下線を表示するにはズームする必要があります)。
次に、「purple p hair」と言うと、「a」の下に紫色の下線が付いた単語が検索されます。そのため、上記のスクリーンショットでは、emacsが「regexp-quote」と入力してしまうと言っています。
これにより、認識機能が一貫して認識に優れている有限の単語セットを使用して、画面上にある既に使用した単語を参照できます。
たまに衝突が発生する場合を除き、非常にうまく機能します。それを行うために(random)
、衝突を回避するようにアルゴリズムを変更する代わりに、またはアルゴリズムに変更を割り当てることで、単語のmd5ハッシュからのバイトを使用するのと同じ方法で一貫して単語を参照することを学ぶことができます。私は6つの簡単に区別できる色(下線が1文字幅で1ピクセルの太さだけでは難しい)と3つの簡単に区別できる発音区別記号(互いに区別しやすく、上記の下線と混同しにくい)だけを見つけました線または下線と重なる)、上のソースの上部に表示されます。
衝突の頻度を減らすために、レンダリングを変更する方法がもっと必要です。理想的には、レンダリングの変更は次のようになります。
- テキストの残りの部分から不快にならないでください。これにより、たとえば、inverse-videoプロパティを却下することになりました。
- 他の変更と簡単に混同しないでください。上線は、前の行の下線と間違えやすい。フォントサイズが非現実的に大きくない限り、多くの発音区別符号は似ています。
- 他の変更がある場所の空間的に近くにあります。今、目がターゲティングキャラクターを見つけると、すべての情報、マーカー、下線、文字がそこにあります。
- ダイアクリティカルマークを正しくレンダリングする固定幅フォント(コーディングに必要)でうまく動作します(マークを正しくレンダリングするには、ConsolasからDejaVu Sans Monoに切り替える必要がありました)
- ラテン系のアルファベット文字に取り組みます。たとえば、アラビア語の結合マークがありますが、ラテンアルファベット文字では結合しません。
- 文字の色は変更しないでください。これは既に構文の強調表示に使用されているためです。
- 実際、emacs lispを使用してemacsで実行可能になります;)
レンダリングを制御する特殊なUnicode文字が悪用されて、新しい可能性が開かれる可能性がありますか?または、より多くの色を簡単に区別できるように下線を太くする方法はありますか?または、Unicode以外の文字の上にマークをレンダリングできる他のあいまいなemacs機能がありますか?
(char-to-string ?\uFEFF)
、もう1つは縮小されたターゲット文字です両方が収まるようにサイズを調整します。もう一つのアイデアは、垂直裏抜けを使用することで(で利用できるでしょういくつかのライブラリで使用されているものと同様のフォントが、すべてではない)vline.el
emacswiki.org/emacs/VlineMode