0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカル環境で動画に字幕を付けるアプリの作成

0
Posted at

はじめに

AIのコード生成を使いながら、動画に字幕を付けるアプリを作成中です。

  • インターネット接続が必要
  • 音声データを外部へ送信する必要がある
  • コストがかかる

といった点があるので、今回は「ローカルだけで完結する」ことを目標に作成しました。

LexiVerse Video Captioner
https://github.com/gippol/lexiverse-video-captioner

app_image.png

上の動画はNotebookLMに作ってもらったものです


Microsoft Foundry Local + Whisper を使う

最初は、Microsoft Foundry Local と Whisper を使う構成で試していました。
Whisper自体の文字起こし精度はかなり高く、普通にテキスト化するだけなら十分実用的でした。
ただ、実際に字幕を作ろうとすると問題が発生しました。

字幕には時間情報が必要だった

字幕ファイル(SRTなど)を作るには、

  • 何秒から表示するか
  • 何秒まで表示するか

というタイムスタンプ情報が必要になります。

しかし、最初に使っていたWhisper系ライブラリでは、取得できるデータの中に時間情報が含まれていないようでした。

これでは、

この文章をいつ表示すればいいのか分からない

という状態になります。\(^o^)/


Whisper.netに変更

そこで途中から、Whisper.net を使う構成へ変更しました。
Whisper.netでは、文字起こし結果と一緒にタイムスタンプ情報も取得できたため、字幕生成との相性がかなり良かったです。

例えば、

  • 開始時間
  • 終了時間
  • 認識したテキスト

をまとめて扱えるので、そのままSRT形式へ変換しやすくなりました。


mp3のPodcastにも使える

開発中に「動画だけじゃなくてmp3にも使えるのでは?」と気づきました。
試しに英語Podcastへ使ってみたところ、聞き取れていなかったところも理解できるようになってラッキーでした。('ω')


そしてWindows 11のLive Captionsに気づく

そんな感じで作っていたのですが、その後、
Windows 11 に「Live Captions」という機能が標準搭載されていることに気づきました。/(^o^)\

すでにOS標準で字幕機能があった

Live Captionsは、

  • PC上で再生される音声
  • 動画
  • 音声配信

などに対してリアルタイムで字幕を付けてくれる機能です。

「えっ、最初から入ってたの!?」となりました。


作ってみて良かったと思いたい

ただ、結果的には作ってみて良かったと思っています。

実際に実装してみると、

  • 音声認識
  • タイムスタンプ処理
  • 字幕フォーマット
  • ローカルAI実行

など、かなり理解が深まりました。

また、

  • 「字幕を作るには時間情報が重要」
  • 「ライブラリによって取得できるデータが違う」

みたいな実践的な知識も得られました。

やっぱり、自分で作ってみると分かることが多いですね。\(^o^)/


おわりに

今回はFoundry Localを使うつもりだったのでWPFで作成したのですが、ひとまず動けばいいかと思って、Bindingを使わずに作ったのは失敗でした。😣


参考リンク:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?