Python + ESPnetで日本語の文字起こし(ASR)を実装する
Python + ESPnetで日本語の文字起こし(ASR)を実施します.
今回はGoogle ColabとGoogle Driveを連携させて,notebook形式で実行してます.
Google Colaboratory(以下Google Colab)は、Google社が無料で提供している機械学習の教育や研究用の開発環境です。開発環境はJupyter Notebookに似たインターフェースを持ち、Pythonの主要なライブラリがプリインストールされています。
引用元:Google Colabの使い方 (opens new window)
全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】
# Google Colabのファイル構成
プロジェクトディレクトリはASRとしています.度々,省略しています.
本稿では,岡田斗司夫さんの切り抜き動画 (opens new window)を文字起こしします.
ASR
├── okada.mp4 <- 文字起こし動画
├── okada.wav <- 文字起こし音声
├── 01_okada.wav <- 0~60秒までの音声
└── ESPnetASR.ipynb <- 実行用ノートブック
# Google Driveと連携
Google ColabとGoogle Driveを連携させて,作業ディレクトリを作成します.
# Google Driveと連携
from google.colab import drive
drive.mount('/content/drive')
# 作業ディレクトリの作成
%cd /content/drive/MyDrive/
!mkdir -p ASR
%cd ASR
!ls
# モジュールのインストール
下記のコマンドでモジュールをインストールします.
# ffmpeg
!apt-get install ffmpeg
# pip
!pip install torch
!pip install espnet_model_zoo
# 動画から音声へ変換
ffmpegで動画から音声への変換を実行します.
ESPNetでは下記のwavファイルの設定でないと,ちゃんと文字起こしされません.
- Channel num : 1
- Sample width : 2
- Sampling rate : 16000
上記の設定を加味した変換は下記の通りとなります.また,あまりに音声データが長いと,メモリーが足りずプログラムが止まるので,本稿では60秒の長さで文字起こしします.
# 動画→音声
!ffmpeg -i "okada.mp4" -ar 16000 -ac 1 -y -f wav "okada.wav"
# 音声の切り抜き
!ffmpeg -i okada.wav -ss 0 -t 60 -y 01_okada.wav
# 文字起こしの実行
下記のコードで文字起こしを実行します.
import soundfile
from espnet_model_zoo.downloader import ModelDownloader
from espnet2.bin.asr_inference import Speech2Text
# 学習済みをダウンロードし、音声認識モデルを作成
d = ModelDownloader()
speech2text = Speech2Text(
**d.download_and_unpack("kan-bayashi/csj_asr_train_asr_transformer_raw_char_sp_valid.acc.ave"),
device="cuda" # CPU で認識を行う場合は省略
)
# 音声ファイル読み込み
fname = '01_okada.wav'
speech, _ = soundfile.read(fname) # 認識させたい音声ファイルを指定
# 認識結果の取得と表示
nbests = speech2text(speech)
text, *_ = nbests[0]
print(text)
# NHKのですねあの先週ですね東京ミラクルの第三種ですねえー最近の商品アニメっていう海が放映されたんですけども
# まとめ
本稿では,ESPNetによる文字起こしを実装しました.
# 参考サイト
ESPnet2で始めるEnd-to-End音声処理 (opens new window)
複雑な音声処理タスクを一気通貫で実装できる! ESPnetの概念と特徴について (opens new window)
簡単に作れるTTSモデル:ESPnetを用いたつくよみちゃんTTSモデル作成 (opens new window)
ESPnet による音声認識入門 ~ESPnet Model Zoo 編~ (opens new window)