1. 背景
- 業務で少しTranscribeを使っている。
- Transcribeの音声認識の精度を上げる方法として、「カスタムボキャブラリ」と「カスタム言語モデル」がある。
- 「カスタムボキャブラリ」は、標準のTranscribeでは認識されにくい専門用語などを、個別に事前に登録しておく機能で、検証記事も多い。一方で「カスタム言語モデル」の検証事例があまりないため、今回試してみる。
2. Transcribe カスタム言語モデルとは(自分の理解)
ドキュメントやFAQを読んで、自分としては以下のように理解した。
「対象ドメインのドキュメントを大量に学習させることで、同音異義語や似たような言い回しを適切に文字起こしできるようになる可能性がある。(例:医療系のドキュメントを学習することにより、「堪能」ではなく「胆嚢」で文字起こしできるようになるなど)」
Unlike custom vocabularies, which increase recognition of a word by providing hints (such as pronunciations), custom language models learn the context associated with a given word. This includes how and when a word is used, and the relationship a word has to other words. For example, if you train your model using climate science research papers, your model may learn that 'ice floe' is a more likely word pair than 'ice flow'.
- 公式ドキュメント(上記)によると、カスタム言語モデルを適切に使用すれば、「「ice flow」(氷の流れ) の代わりに、 「ice floe」(流氷) を適切に認識できるかも?」とのこと。
We recommend using at least 100k and at most 10M words of running text.
- FAQによると、学習のためには 100,000~10,000,000 words の文章量が推奨(結構大変)。
3. やったこと
- 以下のような例文を、通常のTranscribeで文字起こしした場合に、「お食事券」と「汚職事件」がどのように判別されるのかを確認する。
- 「このレストランで、このおしょくじけんは使えますか?」
- 「警察は、このおしょくじけんの犯人を捕まえられますか?」
- 通常のTranscribeでは、「汚職事件」とすべき例文も含めて、「お食事券」と文字起こしされる割合が高い。「汚職事件」が適切な場合にはそちらで文字起こしされる確率が高まるように、「汚職事件」を含む例文を大量に作成し、それを学習させることによるカスタム言語モデルを作成する。
- 「汚職事件」について学習したカスタム言語モデルを使用して、通常のTranscribeと比較して判別結果がどのように変化するか確認する。
4. 検証環境
- 音声発話は、PC1のPolly(マネコン)で行う。設定値は以下(一番認識率が高いため)。
- エンジン:ニューラル
- 言語:日本語
- 音声:Kazuha
- 音声認識/文字起こしは、PC2のTranscribe(マネコン)で行う。設定値は以下。
- 言語設定: 特定の言語/日本語、日本(ja-JP)
- カスタム言語モデル: オフ or オン(作成したカスタム言語モデルを指定)
5. 手順
5.1 「おしょくじけん」を含む評価用例文の作成
- 「おしょくじけん」を含む例文を作成し、標準のTranscribeでの文字起こし結果を確認する。
- 10個の文を一度に文字起こしすると、前の文が文脈として使用され、判定に影響する可能性があるため、1文ずつストリーミングを新規開始して別々に文字起こしする。
| # | 観点 | 発話 | 文字起こし結果(標準) |
|---|---|---|---|
| 1 | 人間でもどちらか分からない | このおしょくじけんについて教えてください。 | この お 食事 券 に つい て 教え て ください。 |
| 2 | 人間でもどちらか分からない | このおしょくじけんについて知っている人はいますか? | この お 食事 券 に つい て 知っ て いる 人 は い ます か? |
| 3 | お食事券が適切 | このレストランで、このおしょくじけんは使えますか? | この レストラン で、 この お 食事 券 は 使え ます か? |
| 4 | お食事券が適切 | このおしょくじけんの有効期限は? | この お 食事 券 の 有効 期限 は? |
| 5 | 汚職事件が適切 | 警察は、このおしょくじけんの犯人を捕まえられますか? | 検察 は、 この 汚食 事件 の 犯人 を 捕まえ られ ます か? |
| 6 | 汚職事件が適切 | 検察はこのおしょくじけんの有力な証拠を提出した。 | 検察 は この 汚 食事 券 の 有力 な 証拠 を 提出 し た。 |
| 7 | 紛らわしいがお食事券が適切 | 警察が家宅捜索に入った現場から、大量のおしょくじけんが証拠品として押収された。 | 検察 が 破格 捜索 に 入っ た 現場 から 大量 の お 食事 券 が 証拠 品 と し て 押収 さ れ た。 |
| 8 | 紛らわしいがお食事券が適切 | 検察は、賄賂の代わりに渡されたおしょくじけんのルートを徹底的に追及している。 | 検察 は 賄賂 の 代わり に 渡さ れ た お 食事 券 の ルート を 徹底 的 に 追求 し て いる。 |
| 9 | 紛らわしいが汚職事件が適切 | レストランでの会食がおしょくじけんの証拠となり、ギフトを贈った企業にも捜査の手が及んだ。 | レストラン で の 会食 が、 お 食事 券 の 証拠 と なり、 ギフト を 送っ た 企業 に も、 捜査 の 手 が 及ん だ。 |
| 10 | 紛らわしいが汚職事件が適切 | お店の開店祝いのプレゼントを装い、おしょくじけんの賄賂がレストランの個室で手渡された。 | お 店 の 開店 祝い の プレゼント を 装い、 お 食事 券 の 賄賂 が レストラン の 個室 で 手渡さ れ た。 |
- 文脈からはどちらか分からない場合(#1,#2)、「お食事券」が選定されている。
- 「お食事券」と判定してほしい場合(#3,#4)、「お食事券」が選定されている。
- 「汚職事件」と判定してほしい場合(#5,#6)、「汚食事件」「汚食事券」のような微妙な結果になってしまっている。
- 前後の文脈からの判別が難しい場合(#7~#10)、「お食事券」が選定されている。
5.2 カスタム言語モデルの作成
作成方針
- 5.1で「おしょくじけん」を含む文章の文字起こしを行った際、「汚職事件」よりも「お食事券」として文字起こしされる割合が高く、「汚職事件」はなかなか正しく書き起こしできていない。
- そのため、今回は「汚職事件」として文字起こししてほしい文章の場合に、「お食事券」ではなく「汚職事件」が選定されるように、カスタム言語モデルを作成することを試みる。
学習用データの作成
- 「汚職事件」を含む例文を1000個作成し、1個のテキストファイルとする(レストランやプレゼントなど「お食事券」を想起するようなキーワードも例文に含める)。約50000字のため、学習データとして十分かは微妙。
- テキストファイルをS3バケットに保存する。
1. 汚職事件の捜査令状が出たそのお店では、プレゼントの交換期限がすでに過ぎていた。
2. レストランでの会食が汚職事件の証拠となり、ギフトを贈った企業にも捜査の手が及んだ。
3. 汚職事件に関与した議員が、あのお店で受け取ったギフトの返却期限を確認していた。
4. お店の開店祝いのプレゼントを装い、汚職事件の賄賂がレストランの個室で手渡された。
5. 汚職事件の裁判で、レストランの領収書の提出期限が迫り、隠されたギフトの存在が浮上した。
カスタム言語モデルの作成
- 「Transcribe - カスタム言語モデル - モデルをトレーニング」 から、S3バケットの学習用データを指定して、カスタム言語モデルを作成する。
- 作成には4時間程度を要する。
5.3 カスタム言語モデルでの文字起こし結果
- 5.1項に記載した10個の評価用例文について、カスタム言語モデルを使用した場合に改善されるかを確認する。
- なお今回はカスタム言語モデルを使用した場合、結果に変化が出ることを確認したいため、#9,#10の文章はそのままの文章が学習データに含まれている。
| # | 発話 | 文字起こし結果(標準) | 文字起こし結果(カスタム) | 改善 |
|---|---|---|---|---|
| 1 | このおしょくじけんについて教えてください。 | この お 食事 券 に つい て 教え て ください。 | この お 食事 券 に つい て 教え て ください。 | - |
| 2 | このおしょくじけんについて知っている人はいますか? | この お 食事 券 に つい て 知っ て いる 人 は い ます か? | この お 食事 券 に つい て 知っ て いる 人 は い ます か? | - |
| 3 | このレストランで、このおしょくじけんは使えますか? | この レストラン で、 この お 食事 券 は 使え ます か? | この レストラン で、 この お 食事 券 は 使え ます か? | - |
| 4 | このおしょくじけんの有効期限は? | この お 食事 券 の 有効 期限 は? | この お 食事 券 の 有効 期限 は? | - |
| 5 | 警察は、このおしょくじけんの犯人を捕まえられますか? | 検察 は、 この 汚食 事件 の 犯人 を 捕まえ られ ます か? | 検察 は、 この 汚職 事件 の 犯人 を 捕まえ られ ます か? | 〇(改善!) |
| 6 | 検察はこのおしょくじけんの有力な証拠を提出した。 | 検察 は この 汚 食事 券 の 有力 な 証拠 を 提出 し た。 | 検察 は この汚食 事件 の 有力 な 証拠 を 提出 し た。 | △(惜しい) |
| 7 | 警察が家宅捜索に入った現場から、大量のおしょくじけんが証拠品として押収された。 | 検察 が 破格 捜索 に 入っ た 現場 から 大量 の お 食事 券 が 証拠 品 と し て 押収 さ れ た。 | 検察 が 家宅 捜索 に 入っ た 現場 から 大量 の お 食事 券 が 証拠 品 と し て 押収 さ れ た。 | - |
| 8 | 検察は、賄賂の代わりに渡されたおしょくじけんのルートを徹底的に追及している。 | 検察 は 賄賂 の 代わり に 渡さ れ た お 食事 券 の ルート を 徹底 的 に 追求 し て いる。 | 検察 は 賄賂 の 代わり に 渡さ れ た お 食事 券 の ルート を 徹底 的 に 追及 し て いる。 | - |
| 9 | レストランでの会食がおしょくじけんの証拠となり、ギフトを贈った企業にも捜査の手が及んだ。 | レストラン で の 会食 が、 お 食事 券 の 証拠 と なり、 ギフト を 送っ た 企業 に も、 捜査 の 手 が 及ん だ。 | レストラン で の 会食 が 汚職 事件 の 証拠 と なり、 ギフト を 送っ た 企業 に も 捜査 の 手 が 及ん だ。 | 〇(改善!) |
| 10 | お店の開店祝いのプレゼントを装い、おしょくじけんの賄賂がレストランの個室で手渡された。 | お 店 の 開店 祝い の プレゼント を 装い、 お 食事 券 の 賄賂 が レストラン の 個室 で 手渡さ れ た。 | お 店 の 開店 祝い の プレゼント を 装い、 汚職 事件 の 賄賂 が レストラン の 個室 で 手渡さ れ た。 | 〇(改善!) |
- 一応、「お食事券」が適切な場合は「お食事券」が選択されることを維持しつつ、「汚職事件」が適切な場合は「汚職事件」が選択されるような改善が見られた。
6. 所感
- カスタム言語モデルを使用した場合に、標準のモデルとは異なる結果を出せることが分かった。
- 今回は「おしょくじけん」にフォーカスしたが、実際のユースケースではどの単語の認識がどう改善するか、カスタム言語モデルの場合はよく分からないため、基本的には、認識誤りが発生しやすい単語をピンポイントで修正できるカスタムボキャブラリ機能のほうが使いやすいのではと思った。




