japanese-punctuation-onnx

句読点の無い日本語に、「、」「。」「?」を打つモデル。

AI Model Hugging Face ONNX 日本語

概要

音声認識のなかには、句読点を付けずに文字だけを返すものがあります。日本語に強い ReazonSpeech の k2 版(reazonspeech-k2-v2)もそのひとつです。 このモデルは、そうした文字の並びに後から句読点を打ちます。

句読点の位置は、話の間ではなく文の中身から決めます。一息で話した長い文にも「、」「。」が入り、 「〜でしょうか」「〜行かない」のような問いかけには「?」が付きます。 スマートフォンの日本語入力アプリ Nier Voice IME の文字起こしのために作ったもので、 Hugging Face で公開しています。

打ち方の例

INPUT
明日の会議は何時からですか資料は私が用意しておくので先に始めていてください
OUTPUT
明日の会議は何時からですか?資料は私が用意しておくので、先に始めていてください。
INPUT
駅前に新しいパン屋ができたんだけど行ってみたらすごく混んでいてねまた今度一緒に行かない
OUTPUT
駅前に新しいパン屋ができたんだけど、行ってみたらすごく混んでいてね。また今度一緒に行かない?
INPUT
来週の打ち合わせですが火曜日の午後に変更してもよろしいでしょうか難しければ別の日程を相談させてください
OUTPUT
来週の打ち合わせですが、火曜日の午後に変更してもよろしいでしょうか?難しければ別の日程を相談させてください。

どれもこのモデルに実際に通した結果です。丁寧な文にも、くだけた話し言葉にも打てます。

特徴

✓

「、」「。」「?」の3種類

文の切れ目の「。」、息の区切りの「、」、問いかけの「?」を、1文字ごとに判断して打ちます。

✓

話し言葉に合わせて学習

国会の質疑や記者会見の口頭のやり取り、日常の例文、小説の会話文で学んでいます。「〜だろう?」のような会話の問いかけも学習に含めています。

✓

端末の中で動く

ONNX の int8 版で約92MB。Unihertz Titan 2 では、ひと区切りの文を十数〜200ミリ秒ほどで処理します。通信は要りません。

✓

文字をそのまま入力に

1文字を1つの単位として扱うので、辞書や形態素解析を用意せずに使えます。vocab.txt を引くだけで入力が作れます。

精度

実際の口述74本を ReazonSpeech の k2 版で文字にし、句読点を打った結果を、同じ音声を Whisper で起こしたときの句読点と比べました。 数字は一致の度合いを表す F1 で、1.0 に近いほど一致しています。

、。?
区切りの語尾で打つ規則(比較用)0.350.69—
このモデル0.700.880.79

口述は話し手1人のもので、正解の代わりに Whisper の句読点を目安にしています。 「、」は人によって打つ位置が揺れるため、数字は目安としてご覧ください。 語尾の上げ下げだけで問いかけと分かる文(「〜できる」を上げて言うなど)は、文字からは判断しきれないことがあります。

使い方

Hugging Face のページから punct.int8.onnx と vocab.txt を取得し、ONNX Runtime で読み込みます。 文字を1つずつ vocab.txt で番号にして渡すと、文字ごとに「なし/、/。/?」の4通りの点数が返ります。 入力の形と Python の短い例は、Hugging Face のページに載せています。一度に渡せるのは510文字までです。

学習データとライセンス

モデルは Apache License 2.0 で公開しています。土台は東北大学の文字単位 BERT (tohoku-nlp/bert-base-japanese-char-v3)です。 学習には次のデータを、句読点の正規化などの加工をして使いました。

国会会議録(国会会議録検索システム)/ 防衛省ウェブサイト「防衛大臣記者会見」(公共データ利用規約 第1.0版)/ Tatoeba(CC BY 2.0 FR)/ 青空文庫の会話文(globis-university/aozorabunko-clean、CC BY 4.0)

リンク

← 一覧へ戻る