入力文章(音声化前のテキスト)
私はその人を常に先生と呼んでいた。
だからここでもただ先生と書くだけで本名は打ち明けない。
これは世間をはばかる遠慮というよりも、その方が私にとって自然だからである。
私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。
筆をとっても心持は同じ事である。
よそよそしい頭文字などはとても使う気にならない。
私が先生と知り合いになったのは鎌倉である。
その時私はまだ若々しい書生であった。
暑中休暇を利用して海水浴に行った友達からぜひ来いというはがきを受け取ったので、私は多少の金を工面して、出掛ける事にした。
私は金の工面に二、三日を費やした。
ところが私が鎌倉に着いて三日と経たないうちに、私を呼び寄せた友達は、急に国元から帰れという電報を受け取った。
電報には母が病気だからと断ってあったけれども友達はそれを信じなかった。
友達はかねてから国元にいる親たちに勧まない結婚を強いられていた。
彼は現代の習慣からいうと結婚するにはあまり年が若過ぎた。
それに肝心の当人が気に入らなかった。
それで夏休みに当然帰るべきところを、わざと避けて東京の近くで遊んでいたのである。
彼は電報を私に見せてどうしようと相談をした。
私にはどうしていいか分らなかった。
けれども実際彼の母が病気であるとすれば彼はもとより帰るべきはずであった。
それで彼はとうとう帰る事になった。
せっかく来た私は一人取り残された。
出力文章
私はその人を常に先生と呼んでいた。
だからここでもただ先生と書くだけで本名は打ち明けない。
これは世間をはばかる遠慮というよりもその方が私にとって自然だからである。
私はその人の記憶を呼び起こす音にすぐ先生と言いたくなる筆をとっても心持ちは同じことである。
よそよそしい頭文字などはとても使う気にならない。
私が先生と知り合いになったのは鎌倉である。
その時私はまだ若々しい女性であった。
暑中休暇を利用して海水浴に行った。
友達から是非恋というはがきを受け取ったので私は多少の金を工面して出かけることにした。
私は金の工面にに3日を費やした。
ところが私が鎌倉について3日と経たない。
うちに私を呼び寄せた。
友達は牛肉に元から帰れという電報を受け取った。
連邦には母が病気だからと断ってあったけれども友達はそれを信じなかった。
友達はかねてから国本にいる親たちに進まない結婚を強いられていた。
彼は現代の習慣から言うと結婚するにはあまり年が若すぎた。
それに肝心の当人が気に入らなかった。
それで夏休みに当然帰るべきところをわざと避けて東京の近くで遊んでいたのである。
彼は電報を私に見せてどうしようと相談をした。
私にはどうしていいかわからなかったけれども実際彼の母が病気であるとすれば彼はもとより帰るべきはずであった。
それで彼はとうとう帰ることになった。
せっかく来た。
私は一人取り残された。
ソース
説明
音声->テキスト化はライブラリの出力そのままのため、ライブラリの精度に依存しています。
文章の区切れについては、プログラム内で文章の区切れ前後に存在する品詞から判断するようにしています。
ただ少ないサンプルにおいて人手で品詞を設定しているため、精度はまあまあレベルだと思います。
主語述語検出等の情報を使用すれば、精度は向上するかと思います。
人手で全て書き起こす場合と、このプログラムを使って修正を行う場合を比較すると、プログラムを使って修正するほうが楽だと思います。
使用したライブラリ等
SpeechRecognition
音声認識ライブラリです。
1度のリクエストが10MB近くになるとBad requestになるらしいため、長い音声ファイルを使用する場合、pydub等でファイルを分割する必要があるかと思います。
MeCab
形態素解析ライブラリです。本プログラムではChaSen互換で単語単位に分割し、品詞情報から文の区切りを判断しています。
VOICEVOX(読み上げソフトウェア)
フリーのwavファイルでよさそうなものが見つからなかったため、VOICEVOX:四国めたん を使用して音声ファイルを作成しました。
機械に文字から音声を作ってもらい、機械に音声を認識させて文字に書き起こしているためマッチポンプ感があります。
参考文献
- 夏目漱石 こころ
- DockerでPython実行環境を作ってみる - Qiita
- Docker コンテナ内に一般ユーザーを作成する
- GitHub - Uberi/speech_recognition: Speech recognition module for Python, supporting several engines and APIs, online and offline.
- 【Python入門】日本語の文字起こしのやり方(音声認識:音声ファイル編)サンプルコード | 子供プログラマー
- MecabをPythonで使うまで - Qiita
- fedora30 python3 から MeCabを使う → エラー「 [ifs] no such file or directory: /usr/local/etc/mecabrc」が出たら sudo cp /etc/mecabrc /usr/local/etc/ で解決 - min117の日記
- VOICEVOX | 無料で使える中品質なテキスト読み上げソフトウェア