制作日記: 動画でRiggingのお勉強
ちょっと前から上のジーナさんモデルを作っていて、ACSでリギングを行っていたのですが、独自のボーンを追加したいときはどうすれば……フェイシャルリグってどう組めばいいんだ……と、標準機能の知識が不足しすぎてて迷走していました。
そんな中、コメントで Character Rigging Course というチュートリアル動画(有料・35時間)が勉強になると教えていただきました。英語の文章は少しわかるのですが、動画となると自信ないなぁと思いつつ思い切って購入してみました。現在、35時間中の6時間分ほど見終わったのですがもう本当に目から鱗がぽろぽろ落ちる感じです。ヒアリングはあまり出来ないので操作を真似して盗むスタイルの勉強になるのですが、それでも十分といっていいほど勉強になってます。
ただ、やっぱり解説とかが聞き取れないのはもったいないなぁと思い始め、 GoogleCloudPlatform(GCP) の Speech API を利用しての自動テキスト起こしを試してみました。
Riggingのお勉強のためにSergio Mucinoさんの動画見てるけどあまり英語が出来ないのが悔やまれるなぁ
— 焼き鳥つくね (@cignoir) 2017年11月25日
twitterでのしげぽんさんとの会話で思いつきました💡
下準備
動画から音声ファイル抽出
GCP 関連
プロジェクト作成
Speech API有効化
サービスアカウント作成
音声ファイルをCloudStorageにアップロード
GCP のことはよくわかっていないので他のサイト様の解説におまかせします。本当は今日発表された AWS の Transcribe を試したかったんですが申請が必要だったので……
音声認識スクリプト実行
必要な情報
- プロジェクトID
- 認証情報(json)のファイルパス
- サービスアカウント作成時にダウンロードしたファイル
- 音声ファイルのCloudStorage上のパス(gs://~)
gem インストール
$ gem install google-cloud-speech
スクリプト
require "google/cloud/speech" require 'csv' # 音声認識結果の整形用(適当 class Google::Cloud::Speech::Result def start_time Time.at(@words.first.start_time).utc.strftime('%X') end def end_time Time.at(@words.last.end_time).utc.strftime('%X') end def simplify [start_time, end_time, @transcript] end end project_id = "***" # プロジェクトID credentials = "/path/to/credentials.json" # 認証情報のファイルパス src_audio_file = "gs://~" # CloudStorage上の音声ファイルパス dst_csv_file = "result.csv" # CSV出力ファイルパス encoding = :flac # 音声ファイルの形式 language = "en-US" # 音声の言語 speech = Google::Cloud::Speech.new(project_id: project_id, credentials: credentials) audio = speech.audio(src_audio_file, encoding: encoding, language: language) response = audio.process(words: true) response.wait_until_done! result = response.results.map(&:simplify) CSV.open dst_csv_file, "w" do |csv| result.each{ |row| csv << row } end
結果
英語動画の自動テキスト起こしいけそう😀MODOがMotoになってるけどw pic.twitter.com/m2oKdYAHRJ
— 焼き鳥つくね (@cignoir) 2017年11月30日
こんな感じで概ねうまく認識出来ていました。非同期の音声認識をやってる人やRubyの例が少なかったので参考になれば幸いです。料金は見積もりが間違っていなければ35時間分の動画で$50ぐらいみたいです。メリットを考えたら全然安いですね。
師走
年内は動画のお勉強で終わりそうです。ジーナさんの続きの制作は年明けになると思いますが成果を発揮できるように勉強を頑張ります。