北原 康佑
( Kosuke Kitahara )
人と
AI が共存する自動字幕生成
データパイプラインの構築
自己紹介
●
北原 康佑 ( Kosuke Kitahara )
●
2017 年リクルートホールディングス新卒入社
●
リクルートジョブズにてタウンワークの検索・推薦エン
ジンの開発に従事
●
現在 Quipper にてデータエンジニア/データサイエン
ティストとして、データパイプラインの構築や検索・推
薦ロジック等の考案・実装に従事
本日のアジェンダ
●
Quipper について
●
音声文字起こしの機能活用
○
字幕機能
○
講義動画検索機能
●
音声文字起こしパイプラインの構築
○
GCP サービスの活用
○
人と AI の共存
●
まとめ
本日のアジェンダ
●
Quipper について
●
音声文字起こしの機能活用
○
字幕機能
○
講義動画検索機能
●
音声文字起こしパイプラインの構築
○
GCP サービスの活用
○
人と AI の共存
●
まとめ
Vision / Mission
Quipper は "Distributors of Wisdom"というビジョンのもと、オンライン学習サービスを通じて ”Bringing the Best Education to Every Corner of the World”(世界の果てまで最高の学びを届けよう)
というミッションを掲げています。
国内向けサービス
小学生から受験生や大人まで、学習したい全ての人が学べる月額制のオンライン学習サービス。 約4万本の録画授業動画が見られるベーシックプランのほか、オンラインコーチングプランや生配信で授業を受けられるライブプ ランなど、一人一人が自由に学習できるよう、様々なプランを展開しています。 先生方が生徒個々人のレベルに合った最適な学習を提供できる校内インフラサービス。クラス全員に特定の講義や確認テスト、 宿題を配信することができるほか、アクティブラーニングに使える教材も提供。 生徒が夢中になって学び、希望する進路を実現することを支援しています。 隙間時間に3分で学習できる英語サービス。リスニングと発話を鍛えられる「新日常英会話コース」、短期間でのスコアアップを 狙う「TOEIC®L&R TEST対策コース」、「ビジネス英語コース」があり、業界初オンライン完結型コーチングも提供しています。海外向けサービス
Quipper Schoolは小学校から高校まで、学校の教室で先生方をサポートするオンラインラーニングマネージメントプラットフォー ムです。先生方は限られた時間の中で、増え続ける複雑な校務、変化する教育過程の対応などに追われています。Quipper Schoolを通じて、私たちは先生の業務負荷を軽減するだけではなく、21世紀を生き抜く人材育成のお手伝いをしたいと考えてい ます。 Quipper Videoは、いつでもどこでも自分のペースで学習できるオンライン講義動画サービスです。実力派講師によって解説さ れる短くまとめられた講義動画、図解説明の入ったわかりやすいテキスト、自分の苦手箇所がわかる到達度テストの三点セット によって、一人一人を自ら学べる生徒にします。教師向けプラットフォームであるQuipper Schoolを使うことで、先生は生徒に 対しQuipper Videoを使った学習を促すことも可能です。 Quipper Campusは進学を考える高校生のための大学進学情報サイトです。地域や専攻による大学検索だけでなく、適性テス トを通じて自分の目指す進路に最適な教育機関を見つけることができます。現在インドネシアでのみ運営しています。サービスラインナップ
日本 インドネシア フィリピン 対象学年 小・中学校 高校 大学・社会人 高校 高校 オンラインビデオ (B to C) オンラインビデオ& アセスメント (B to B to C) オンラインコーチング パーソナルコーチプラン各国で様々なサービスラインナップにて事業展開をしています
サービス会員数推移
47 万人
74 万人
26 万人
8 万人
4 万人
17
国外
国内
2014
2015
2016
2017
2018
2013
97 万人
110
13
2019
127 万人
サービス開始から 6 年、有料会員数は国内外で各年度累計 127 万人となりました( 2019 年度単体)
コロナ休校期間中の学習支援
【インドネシア】Quipper がインドネシア政府より推奨教育サービス認定
COVID-19 の影響拡大を受け、学校閉鎖を決定したジャカルタにおいて
政府が推奨するオンライン学習サービスとして Quipper が認定。
(参考:
http://www.recruit-mp.co.jp/news/release/2020/0414_3855.html
)
【日本】スタディサプリを利用した児童生徒の学習機会の提供を大阪府泉大津市で開始
市内学校に通う小学校 4 年生~中学校 2 年生 (現小学校 5 年生~中学校 3 年生 ) の児童・生徒全員へ
『スタディサプリ』のアカウントを配布。
授業動画や確認テストを使った学習機会の提供、アンケート機能を活用した検温の報告による体調管理、
「活動メモ」機能を活用した休校期間中の日々の活動を共有を実現。
(参考:
http://www.recruit-mp.co.jp/news/release/2020/0602_3866.html
)
本日のアジェンダ
●
Quipper について
●
音声文字起こしの機能活用
○
字幕機能
○
講義動画検索機能
●
音声文字起こしパイプラインの構築
○
GCP サービスの活用
○
人と AI の共存
●
まとめ
【概要】
●
講義動画にインドネシア語を表示
【ユーザーにとっての価値】
●
音声を流すことのできない状況や聞き取りづらい状況での内
容理解のサポート
●
テキスト情報により講義内容理解をサポート
字幕機能について
字幕機能
- 全体像 -
Web Server
API
video_id
字幕 Storage
字幕テキスト
自動字幕生成
パイプライン
字幕動画
講義動画検索機能について
【概要】
●
文字起こしされた講義音声を用いて動画を検索
【ユーザーにとっての価値】
●
ユーザーの関心のある動画を大量のコンテンツから探しやすく
なる
講義動画検索機能
- 全体像 -
Web Server
API
Query
Elasticsearch
講義動画
文字起こしデータ
検索結果
video_ids
自動字幕生成
パイプライン
出力先と形式を修正すれば講義動画
検索にもそのまま利用することができ
る
Web Server
API
Query
Elasticsearch
講義動画
文字起こしデータ
検索結果
video_ids
本日は「音声文字起こしパイプライン 」とし
てお話したいと思います
自動字幕生成
パイプライン
本日は「音声文字起こしパイプライン」についてお話します
音声文字起こしパイプラインに必要な要件
●
高精度な講義動画(先生の声)の文字起こし
○
大量の講義動画が存在しているため機械による自動化が必要
●
大量の既存・新規コンテンツを一括で処理できるようなパイプライン
○
処理の監視やリトライが可能であること
○
誤認識したときに人の手で修正ができる運用であること
音声文字起こしパイプラインに必要な要件
●
高精度な講義動画(先生の声)の文字起こし
○
大量の講義動画が存在しているため機械による自動化が必要
●
大量の既存・新規コンテンツを一括で処理できるようなパイプライン
○
処理の監視やリトライが可能であること
○
誤認識したときに人の手で修正ができる運用であること
これらの要件を GCP とパイプラインの設計でクリア
●
高精度な講義動画(先生の声)の文字起こし
○
大量の講義動画が存在しているため機械による自動化が必要
●
大量の既存・新規コンテンツを一括で処理できるようなパイプライン
○
処理の監視やリトライが可能であること
○
誤認識したときに人の手で修正ができる運用であること
技術要件
( GCP の選定理由について)
音声文字起こしパイプラインに必要な要件
運用要件
(パイプラインの設計について)
本日のアジェンダ
●
Quipper について
●
音声文字起こしの機能活用
○
字幕機能
○
講義動画検索機能
●
音声文字起こしパイプラインの構築
○
GCP サービスの活用
○
人と AI の共存
●
まとめ
どのような技術要件が存在するか
●
どうやって自動で高精度な文字起こしをするか?
○
機械学習 ( Automated Speech Recognition; ASR ) を使用
■
内製もしくはサードパーティ製が候補
●
Cloud Speech-to-Text の採用
●
どうやって大量のデータを処理するか?
○
ワークフローエンジンを使用
どのような技術要件が存在するか
●
どうやって自動で高精度な文字起こしをするか?
○
機械学習 ( Automated Speech Recognition; ASR ) を使用
■
内製もしくはサードパーティ製が候補
●
Cloud Speech-to-Text の採用
●
どうやって大量のデータを処理するか?
○
ワークフローエンジンを使用
Cloud Speech-to-Text を採用した理由
具体的には
本 Pj の場合
インドネシア語がわからない
自動音声認識 ( ASR )
インドネシア語はデータセットが少ない
内製化するための要件
データに対する理解は十分か
ドメイン特有のタスクか
学習データを保有しているか
具体的には
Cloud Speech-to-Text を採用した理由
データに対する理解は十分か
本 Pj の場合
インドネシア語がわからない
ドメイン特有のタスクか
自動音声認識 ( ASR )
学習データを保有しているか
インドネシア語はデータセットが少ない
運用負荷が非常に高い内製 ML を避け、 Cloud Speech-to-Text を採用
内製化するための要件
どのような技術要件が存在するか
●
どうやって自動で高精度な文字起こしをするか?
○
機械学習 (Automated Speech Recognition; ASR) を使用
■
内製もしくはサードパーティ製が候補
●
Cloud Speech-to-Text の採用
●
どうやって大量のデータを処理するか?
○
ワークフローエンジンを使用
ワークフローエンジン
Cloud Composer ( Airflow ) を採用した理由
DAG の定義
マネージド
( 2020 / 05 / 15 時点)
Github スター数
Rundeck
Digdag
Jenkins
Airflow
Luigi
Python
GUI
GUI
.dig ファイル + YAML
Python
13.3K
16.7K
895
3.8K
15.5K
ワークフローエンジン
Cloud Composer ( Airflow ) を採用した理由
DAG の定義
マネージド
( 2020 / 05 / 15 時点)
Github スター数
Rundeck
Digdag
Jenkins
Airflow
Luigi
Python
GUI
GUI
.dig ファイル + YAML
Python
13.3K
16.7K
895
3.8K
15.5K
音声文字起こしパイプライン
アーキテクチャ
-Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 JSON 文字起こし Cloud Storage 文字起こし Cloud Composer音声文字起こしパイプライン
アーキテクチャ
-Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 JSON 文字起こし Cloud Storage 文字起こし Cloud Composer長尺動画の文字起こしは時間がかかり非
同期処理になってしまうので音声を分割し
同期処理を実現
音声文字起こしパイプライン
アーキテクチャ
-Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 JSON 文字起こし Cloud Storage 文字起こし Cloud Composer7,000 個の動画を Airflow で並列に管理しようとするとタスクの
状態の監視がうまくできなかったので自前の Python スクリプト
で出力ファイルの監視
Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 JSON 文字起こし Cloud Storage 文字起こし Cloud Composer
音声文字起こしパイプライン
アーキテクチャ
-7,000 個の動画を 1 週間で文字起こしすることを実現
本日のアジェンダ
●
Quipper について
●
音声文字起こしの機能活用
○
字幕機能
○
講義動画検索機能
●
音声文字起こしパイプラインの構築
○
GCP サービスの活用
○
人と AI の共存
●
まとめ
どのような運用が発生しうるか
【要件】
●
既存の大量の講義動画だけでなく、新規に追加されるコンテンツについても順次音声
文字起こしを行えること
●
音声認識には誤りが含まれうるため、任意のタイミングで人の手による修正・校正がか
けられること
●
複数のコンテンツ担当者が関わるのに加え、学習コンテンツとして不適切なものが提
供しないよう適切なチェックプロセスが組み込まれていること
Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 JSON 文字起こし Cloud Storage 文字起こし Cloud Composer
人手による修正を加えられる仕組みが必要
Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 文字起こし Cloud Storage 文字起こし Cloud Composer
人手による修正を加えられる仕組みが必要
JSONHuman-in-the-Loop について
●
本来は機械学習に関わらず、フライトシミュレータなどに代表される、人間のオペレー
ションと機械的な物理シミュレーションが相互に左右するようなシステムに対して用いら
れる言葉
●
機械学習だと Human-in-the-Loop ( HITL ) = “人間参加” と訳されることが多い
●
機械と人間を組み合わせることでより良いアウトプットを目指す
○
e.g. マーケットプレイスの違反検知、など
■
機械の出力のみで判断すると出品 OK なのに NG だと判断してしまう可能
性がある → 人間の判断を介在させることで質を向上させる
●
継続的に校正を行うことでコンテンツの質をどんどん高めていく
本プロジェクトで目指した
HITL
① 文字起こし生成
Speech-to-Text
コンテンツ作成担当者
② ダウンロード&校正
③ 校正済みファイルのアップロード
④ AI 生成ファイルと
校正済みファイルを提供
① 機械的に不正なアウトプット
・文字コード, 不正なフォーマット, 不正な拡張子
② セキュリティ
・不正な改ざん、ファイルの全削除
③ バージョン管理
・意図しないファイルの表出、上書きによるファイルの消失
人間がフローに入り込むことで発生しうる課題
Gitを信頼できる唯一のソースとみなし、あらゆる変更を観察・検証する
Gitを信頼できる唯一のソースとみなし、あらゆる変更を観察・検証する
① 機械的に不正なアウトプット
・文字コード, 不正なフォーマット, 不正な拡張子
② セキュリティ
・不正な改ざん、ファイルの全削除
③ バージョン管理
・意図しないファイルの表出、上書きによるファイルの消失
GitOps について
Gitを信頼できる唯一のソースとみなし、あらゆる変更を観察・検証する
① 機械的に不正なアウトプット → Validation 機構の導入 ( CI )
・文字コード, 不正なフォーマット, 不正な拡張子
② セキュリティ → Pull Request によるファイル操作の管理
・不正な改ざん、ファイルの全削除
③ バージョン管理 → Git によりバージョン変更の容易化
・意図しないファイルの表出、上書きによるファイルの消失
GitOps について
GitOps の導入
① 文字起こし生成
コンテンツ作成担当者
② ダウンロード&校正
③ 校正済みファイルのアップロード
④ 機械生成ファイルと
校正済みファイルを提供
Speech-to-Text
GitOps の導入
① 文字起こし生成
コンテンツ作成担当者
② ダウンロード&校正
③ 校正済みファイルのアップロード
④ 機械生成ファイルと
校正済みファイルを提供
GitOps を取り入れる
Speech-to-Text
HITL と GitOps によるパイプラインの拡張
Cloud Storage 文字起こし コンテンツ 制作担当者 ファイル修 正 修正済み 文字起こし Cloud Storage ( Develop ) 修正済み文字起こし CircleCI (CI /CD) ファイル Validation ファイル Sync Cloud Storage ( Production ) 修正済み文字起こし CircleCI (CI /CD) ファイル Validation ファイル Sync PR マージ Github ( Master Branch ) ファイル Validation PR マージ ファイル Validation Github ( Develop Branch )HITL と GitOps によるパイプラインの拡張
Cloud Storage 文字起こし コンテンツ 制作担当者 ファイル修 正 修正済み 文字起こし Cloud Storage ( Develop ) 修正済み文字起こし CircleCI (CI /CD) ファイル Validation ファイル Sync Cloud Storage ( Production ) 修正済み文字起こし CircleCI (CI /CD) ファイル Validation ファイル Sync PR マージ Github ( Master Branch ) ファイル Validation PR マージ ファイル Validation Github ( Develop Branch )Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 文字起こし 文字起こし Cloud Storage 文字起こし Cloud Composer