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)

End-to-End音声処理ツールキットESPnetの紹介 (opens new window)

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

複数のversionをインストールしてる中で,pythonのversionを切り替える

複数のversionをインストールしてる中で,pythonのversionを切り替える

複数のversionをインストールしているpythonのversionを切り替えます.

ここでは,ターミナルで使うpythonのversion(3.9.1)と,jupyterのversion(3.8.6)が違うので,ターミナルで使うpythonのversionを「3.9.1」から「3.8.6」に切り替えます.

Python + Opencvでアニメをラフ画のような線画に変換する

Python + Opencvでアニメをラフ画のような線画に変換する

Python + Opencvでアニメをラフ画のような線画への変換を実施します.