音声ファイルからの文字起こしデータをいじってみた
読書と編集 千葉直樹です
なんのこと?
Youtubeに動画をアップロードすると、文字起こしができます。
音声を自動的に認識してテキストに変えて表示してくれて、時間と認識テキストが表示されて、適当な時間のテキストをクリックすると動画がそこにジャンプしてくれる機能ですね。
この手の機能、GoogleもAmazonもMicrosoftもクラウドで提供しています。
それぞれクラウドのアカウント作らなければならないし、使うのもちょっと面倒だったりするんですが、使えるようになると面白いのですね。
やってみたこと
知り合いからAmazon Transcribeを使ってみたんだけど、出力ファイルがjsonで扱いかねているという相談がありました。
jsonファイルを開いてみると、それほど複雑ではないんだけど、必要なデータを取り出すにはちょっとしたプログラムを作らなければならないなという感じでした。
全文のベタデータを取り出すのはわりと簡単で、Linuxだとjqとtrでちょこっと処理をするだけなんです。
ただ、これ、ホントにベタな一行文になっちゃうんですね。
しかも話し言葉の認識の精度はまだまだなので、それを修正しながら議事録風にまとめていくのはちょっと大変そうだなと思いました。
もう少しデータを見ていくと、まとまった全文のあとに、時間ごとの話者識別データと、認識した分かち書きテキストがそれぞれ配列に入っています。分かち書きと言っても一文字二文字ずつという感じの断片の集まりなんですね。
話者識別データと分かち書きテキストは別々の配列になっているので、これらを組み合わせて、時間・話者ごとのテキストを作ることを考えました。
あまり真面目にPythonを書いたことがなかったので、文法を調べ、使えるライブラリを調べながらコードを書くこと半日。一応目標通りのプログラムが出来上がりました。
データは相談者のものなので公開できないのですが、こんな感じのデータができました。
0:00:01,spk_0,こんにちははじめましょうか
0:00:06,spk_1,そうしましょう
0:00:09,spk_0,この間の話なんですがどこまで進んだんでしたっけ
もちろん誤変換もあるし、認識できない部分もあったりはしますが、現場にいた人だったらこれを見ながら修正して全体を完成させることができそうな感じではあります。
面白いと思ったことと今後の想像
話者を区別しているところが興味深い。たぶん完璧ではないのでしょうけど、相談を受けたデータのケースでは6人くらい区別していたみたいです。
GoogleのSpeech-to-Textでは音声モデルを使って認識精度を上げられるみたいです。機械学習させるところからやると面白そうだなと思いました。
やりようによっては、音声から感情などを読み取ることができるかもしれません。テキストに付随してそういうデータが出てくると面白いし、逆にそれを元に音声合成するというのも面白そう。
話した内容を機械学習させて、それをもとに自動応答するシステムが作れるような気がしてきました。というか、そういうふうに動いているのがGoogle AssistantとかSiriなんでしょうけど、こういうのを誰もが使えるようになると自分の分身が作れるのでさまざまな応用が考えられますね。
というわけで
久しぶりにプログラミングをして、なんだかいろいろやりたい気分になってきました。
きちんとコンセプトをまとめて、プロジェクトにしようかな。
GitHubに登録しようと思ったのだけれど、まだ出力データを単純に処理しただけなのでリポジトリにつける名前が思い浮かばず……
今のプログラムはリファクタリングがいるのと、簡単に使うためにはUIをどうにかしなければならないなあと思っています。
もう少し周辺技術を調べてできることを考えてみようと思います。
リモートワークはGmailから始めよう
仕組みをきちんと知ることで、インターネットの性質をフルに活用して仕事をすることができます。
知っているようで知らないGmailを学びなおしてみませんか?