今回の記事ではタイトル通り、音声データを音声認識ソフトを用いて文字起こしし、その後ビジュアライゼーションをした一連の流れをまとめておく。
対象となるデータは自分たちがレコードしたポッドキャストのエピソードであるが、手法はおそらく全ての日本語音声データに適用できると思われる。
音声認識に関しては、手間を省略するためAWSのAmazon Transcribeを利用した。理由としては安価に利用できる(無料枠もある)し、すでにAWSのアカウントを持っていたため使いやすかったからである。
音声認識を行ったあとは、トランスクリプションデータをテキストデータとして保存する。今回は'text_data/#10_dataclysm.txt'として保存した。
library(RMeCab) library(wordcloud2) file_path = 'text_data/#10_dataclysm.txt'
また今回は、形態素解析にRMeCabを、可視化にはwordcloud.jsをバックとしたwordcloud2パッケージを使用した。ggplot2などを使った行い方もあるが出力が個人的に好きなのでwordcoud2を使用した。
text_dat <- RMeCabFreq(file_path) ># A tibble: 1,109 x 4 Term Info1 Info2 Freq <chr> <chr> <chr> <int> 1 あ フィラー * 4 2 あの フィラー * 16 3 あのー フィラー * 43 4 うん フィラー * 67 5 うんと フィラー * 2 6 え フィラー * 14 7 えーっと フィラー * 7 8 そうですね フィラー * 2 9 なんか フィラー * 121 10 ま フィラー * 55 # … with 1,099 more rows
出力としては、分割された語、品詞、活用、頻度のデータが得られます。dplyrを用いてこれらのデータから必要なデータのみを抽出する処理を簡単に書けるため作業がとても楽です。
'%!in%' <- function(x,y)!('%in%'(x,y)) wordcloud_data <- text_dat %>% filter(Info1 %in% c("名詞","形容詞","動詞"), Info2 != "数", Term %!in% stop_words, Freq > 1) %>% select(Term, Freq)
ここではstop_words
というとこで特に含めたくない単語を排除する操作を%!in%
関数を自作することで行っています。また、Freqカラムを参照することで頻度が極端に少ない単語も除去しています。
wordcloud2(wordcloud_data, backgroundColor = "white")
コンソール上や、HTMLにレンダリングしたレポート上ではこのワードクラウドの歌詞がインタラクティブになっている点が好きなのだが、ブログに載せる上では静止画となっているし解像度もかなり低くなってしまっている。 今回は自分の作業の備忘録としてブログに残したが、もし興味がある人がいたら是非とも手元で再現してみてはいかがだろうか。 以上。