• 検索結果がありません。

人と AI が共存する自動字幕生成 データパイプラインの構築 北原康佑 ( Kosuke Kitahara ) Quipper Japan データエンジニア

N/A
N/A
Protected

Academic year: 2021

シェア "人と AI が共存する自動字幕生成 データパイプラインの構築 北原康佑 ( Kosuke Kitahara ) Quipper Japan データエンジニア"

Copied!
60
0
0

読み込み中.... (全文を見る)

全文

(1)

北原 康佑

( Kosuke Kitahara )

人と

AI が共存する自動字幕生成

データパイプラインの構築

(2)

自己紹介

北原 康佑 ( Kosuke Kitahara )

2017 年リクルートホールディングス新卒入社

リクルートジョブズにてタウンワークの検索・推薦エン

ジンの開発に従事

現在 Quipper にてデータエンジニア/データサイエン

ティストとして、データパイプラインの構築や検索・推

薦ロジック等の考案・実装に従事

(3)

本日のアジェンダ

Quipper について

音声文字起こしの機能活用

字幕機能

講義動画検索機能

音声文字起こしパイプラインの構築

GCP サービスの活用

人と AI の共存

まとめ

(4)

本日のアジェンダ

Quipper について

音声文字起こしの機能活用

字幕機能

講義動画検索機能

音声文字起こしパイプラインの構築

GCP サービスの活用

人と AI の共存

まとめ

(5)

Vision / Mission

Quipper は "Distributors of Wisdom"というビジョンのもと、オンライン学習サービスを通じて ”Bringing the Best Education to Every Corner of the World”(世界の果てまで最高の学びを届けよう)

というミッションを掲げています。

(6)

国内向けサービス

小学生から受験生や大人まで、学習したい全ての人が学べる月額制のオンライン学習サービス。 約4万本の録画授業動画が見られるベーシックプランのほか、オンラインコーチングプランや生配信で授業を受けられるライブプ ランなど、一人一人が自由に学習できるよう、様々なプランを展開しています。 先生方が生徒個々人のレベルに合った最適な学習を提供できる校内インフラサービス。クラス全員に特定の講義や確認テスト、 宿題を配信することができるほか、アクティブラーニングに使える教材も提供。 生徒が夢中になって学び、希望する進路を実現することを支援しています。 隙間時間に3分で学習できる英語サービス。リスニングと発話を鍛えられる「新日常英会話コース」、短期間でのスコアアップを 狙う「TOEIC®L&R TEST対策コース」、「ビジネス英語コース」があり、業界初オンライン完結型コーチングも提供しています。

(7)

海外向けサービス

Quipper Schoolは小学校から高校まで、学校の教室で先生方をサポートするオンラインラーニングマネージメントプラットフォー ムです。先生方は限られた時間の中で、増え続ける複雑な校務、変化する教育過程の対応などに追われています。Quipper Schoolを通じて、私たちは先生の業務負荷を軽減するだけではなく、21世紀を生き抜く人材育成のお手伝いをしたいと考えてい ます。 Quipper Videoは、いつでもどこでも自分のペースで学習できるオンライン講義動画サービスです。実力派講師によって解説さ れる短くまとめられた講義動画、図解説明の入ったわかりやすいテキスト、自分の苦手箇所がわかる到達度テストの三点セット によって、一人一人を自ら学べる生徒にします。教師向けプラットフォームであるQuipper Schoolを使うことで、先生は生徒に 対しQuipper Videoを使った学習を促すことも可能です。 Quipper Campusは進学を考える高校生のための大学進学情報サイトです。地域や専攻による大学検索だけでなく、適性テス トを通じて自分の目指す進路に最適な教育機関を見つけることができます。現在インドネシアでのみ運営しています。

(8)
(9)
(10)
(11)

サービスラインナップ

日本 インドネシア フィリピン 対象学年 小・中学校 高校 大学・社会人 高校 高校 オンラインビデオ (B to C) オンラインビデオ& アセスメント (B to B to C) オンラインコーチング パーソナルコーチプラン

各国で様々なサービスラインナップにて事業展開をしています

(12)

サービス会員数推移

47 万人

74 万人

26 万人

8 万人

4 万人

17

国外

国内

2014

2015

2016

2017

2018

2013

97 万人

110

13

2019

127 万人

サービス開始から 6 年、有料会員数は国内外で各年度累計 127 万人となりました( 2019 年度単体)

(13)

コロナ休校期間中の学習支援

【インドネシア】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

(14)

本日のアジェンダ

Quipper について

音声文字起こしの機能活用

字幕機能

講義動画検索機能

音声文字起こしパイプラインの構築

GCP サービスの活用

人と AI の共存

まとめ

(15)

【概要】

講義動画にインドネシア語を表示

【ユーザーにとっての価値】

音声を流すことのできない状況や聞き取りづらい状況での内

容理解のサポート

テキスト情報により講義内容理解をサポート

字幕機能について

(16)

字幕機能 

- 全体像 -

Web Server

API

video_id

字幕 Storage

字幕テキスト

自動字幕生成

パイプライン

字幕動画

(17)

講義動画検索機能について

【概要】

文字起こしされた講義音声を用いて動画を検索

【ユーザーにとっての価値】

ユーザーの関心のある動画を大量のコンテンツから探しやすく

なる

(18)

講義動画検索機能 

- 全体像 -

Web Server

API

Query

Elasticsearch

講義動画

文字起こしデータ

検索結果

video_ids

自動字幕生成

パイプライン

出力先と形式を修正すれば講義動画

検索にもそのまま利用することができ

(19)

Web Server

API

Query

Elasticsearch

講義動画

文字起こしデータ

検索結果

video_ids

本日は「音声文字起こしパイプライン 」とし

てお話したいと思います

自動字幕生成

パイプライン

本日は「音声文字起こしパイプライン」についてお話します

(20)

音声文字起こしパイプラインに必要な要件

高精度な講義動画(先生の声)の文字起こし

大量の講義動画が存在しているため機械による自動化が必要

大量の既存・新規コンテンツを一括で処理できるようなパイプライン

処理の監視やリトライが可能であること

誤認識したときに人の手で修正ができる運用であること

(21)

音声文字起こしパイプラインに必要な要件

高精度な講義動画(先生の声)の文字起こし

大量の講義動画が存在しているため機械による自動化が必要

大量の既存・新規コンテンツを一括で処理できるようなパイプライン

処理の監視やリトライが可能であること

誤認識したときに人の手で修正ができる運用であること

これらの要件を GCP とパイプラインの設計でクリア

(22)

高精度な講義動画(先生の声)の文字起こし

大量の講義動画が存在しているため機械による自動化が必要

大量の既存・新規コンテンツを一括で処理できるようなパイプライン

処理の監視やリトライが可能であること

誤認識したときに人の手で修正ができる運用であること

技術要件

( GCP の選定理由について)

音声文字起こしパイプラインに必要な要件

運用要件

(パイプラインの設計について)

(23)

本日のアジェンダ

Quipper について

音声文字起こしの機能活用

字幕機能

講義動画検索機能

音声文字起こしパイプラインの構築

GCP サービスの活用

人と AI の共存

まとめ

(24)

どのような技術要件が存在するか

どうやって自動で高精度な文字起こしをするか?

機械学習 ( Automated Speech Recognition; ASR ) を使用

内製もしくはサードパーティ製が候補

Cloud Speech-to-Text の採用

どうやって大量のデータを処理するか?

ワークフローエンジンを使用

(25)

どのような技術要件が存在するか

どうやって自動で高精度な文字起こしをするか?

機械学習 ( Automated Speech Recognition; ASR ) を使用

内製もしくはサードパーティ製が候補

Cloud Speech-to-Text の採用

どうやって大量のデータを処理するか?

ワークフローエンジンを使用

(26)

Cloud Speech-to-Text を採用した理由

具体的には

本 Pj の場合

インドネシア語がわからない

自動音声認識 ( ASR )

インドネシア語はデータセットが少ない

内製化するための要件

データに対する理解は十分か

ドメイン特有のタスクか

学習データを保有しているか

(27)

具体的には

Cloud Speech-to-Text を採用した理由

データに対する理解は十分か

本 Pj の場合

インドネシア語がわからない

ドメイン特有のタスクか

自動音声認識 ( ASR )

学習データを保有しているか

インドネシア語はデータセットが少ない

運用負荷が非常に高い内製 ML を避け、 Cloud Speech-to-Text を採用

内製化するための要件

(28)

どのような技術要件が存在するか

どうやって自動で高精度な文字起こしをするか?

機械学習 (Automated Speech Recognition; ASR) を使用

内製もしくはサードパーティ製が候補

Cloud Speech-to-Text の採用

どうやって大量のデータを処理するか?

ワークフローエンジンを使用

(29)

ワークフローエンジン

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

(30)

ワークフローエンジン

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

(31)

音声文字起こしパイプライン

アーキテクチャ

-Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 JSON 文字起こし Cloud Storage 文字起こし Cloud Composer

(32)

音声文字起こしパイプライン

アーキテクチャ

-Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 JSON 文字起こし Cloud Storage 文字起こし Cloud Composer

長尺動画の文字起こしは時間がかかり非

同期処理になってしまうので音声を分割し

同期処理を実現

(33)

音声文字起こしパイプライン

アーキテクチャ

-Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 JSON 文字起こし Cloud Storage 文字起こし Cloud Composer

7,000 個の動画を Airflow で並列に管理しようとするとタスクの

状態の監視がうまくできなかったので自前の Python スクリプト

で出力ファイルの監視

(34)

Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 JSON 文字起こし Cloud Storage 文字起こし Cloud Composer

音声文字起こしパイプライン

アーキテクチャ

-7,000 個の動画を 1 週間で文字起こしすることを実現

(35)

本日のアジェンダ

Quipper について

音声文字起こしの機能活用

字幕機能

講義動画検索機能

音声文字起こしパイプラインの構築

GCP サービスの活用

人と AI の共存

まとめ

(36)

どのような運用が発生しうるか

【要件】

既存の大量の講義動画だけでなく、新規に追加されるコンテンツについても順次音声

文字起こしを行えること

音声認識には誤りが含まれうるため、任意のタイミングで人の手による修正・校正がか

けられること

複数のコンテンツ担当者が関わるのに加え、学習コンテンツとして不適切なものが提

供しないよう適切なチェックプロセスが組み込まれていること

(37)

Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 JSON 文字起こし Cloud Storage 文字起こし Cloud Composer

人手による修正を加えられる仕組みが必要

(38)

Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 文字起こし Cloud Storage 文字起こし Cloud Composer

人手による修正を加えられる仕組みが必要

JSON

(39)

Human-in-the-Loop について

本来は機械学習に関わらず、フライトシミュレータなどに代表される、人間のオペレー

ションと機械的な物理シミュレーションが相互に左右するようなシステムに対して用いら

れる言葉

機械学習だと Human-in-the-Loop ( HITL ) = “人間参加” と訳されることが多い

機械と人間を組み合わせることでより良いアウトプットを目指す

e.g. マーケットプレイスの違反検知、など

機械の出力のみで判断すると出品 OK なのに NG だと判断してしまう可能

性がある → 人間の判断を介在させることで質を向上させる

(40)

継続的に校正を行うことでコンテンツの質をどんどん高めていく

本プロジェクトで目指した

HITL

① 文字起こし生成

Speech-to-Text

コンテンツ作成担当者

② ダウンロード&校正

③ 校正済みファイルのアップロード

④ AI 生成ファイルと

校正済みファイルを提供

(41)

① 機械的に不正なアウトプット

 ・文字コード, 不正なフォーマット, 不正な拡張子

② セキュリティ

 ・不正な改ざん、ファイルの全削除

③ バージョン管理

 ・意図しないファイルの表出、上書きによるファイルの消失

人間がフローに入り込むことで発生しうる課題

(42)

Gitを信頼できる唯一のソースとみなし、あらゆる変更を観察・検証する

(43)

Gitを信頼できる唯一のソースとみなし、あらゆる変更を観察・検証する

① 機械的に不正なアウトプット

 ・文字コード, 不正なフォーマット, 不正な拡張子

② セキュリティ

 ・不正な改ざん、ファイルの全削除

③ バージョン管理

 ・意図しないファイルの表出、上書きによるファイルの消失

GitOps について

(44)

Gitを信頼できる唯一のソースとみなし、あらゆる変更を観察・検証する

① 機械的に不正なアウトプット → Validation 機構の導入 ( CI )

 ・文字コード, 不正なフォーマット, 不正な拡張子

② セキュリティ → Pull Request によるファイル操作の管理

 ・不正な改ざん、ファイルの全削除

③ バージョン管理 → Git によりバージョン変更の容易化

 ・意図しないファイルの表出、上書きによるファイルの消失

GitOps について

(45)

GitOps の導入

① 文字起こし生成

コンテンツ作成担当者

② ダウンロード&校正

③ 校正済みファイルのアップロード

④ 機械生成ファイルと

校正済みファイルを提供

Speech-to-Text

(46)

GitOps の導入

① 文字起こし生成

コンテンツ作成担当者

② ダウンロード&校正

③ 校正済みファイルのアップロード

④ 機械生成ファイルと

校正済みファイルを提供

GitOps を取り入れる

Speech-to-Text

(47)

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 )

(48)

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 )

(49)

Cloud Storage 講義ビデオ Compute Engine 講義音声 信号処理 Cloud Speech-to-Text 音声認識 (文字起こし) Compute Engine ファイル生 成 文字起こし 文字起こし Cloud Storage 文字起こし Cloud Composer

HITL と GitOps によるパイプラインの拡張

(50)

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 )

(51)

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 )

編集したファイルを

アップロード

(52)

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 )

日次 PR

自動作成

(53)

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 )

Validation に失敗すると

マージできない

(54)

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 )

Validation が成功し PR がマージされると自動デプロイ

(55)

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 )

Develop 環境で問題なければ

Master ブランチへ PR 作成

(56)

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 )

ユーザーに届く

(57)

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 )

安全・安定的なコンテンツの品質向上を実現

(58)

本日のアジェンダ

Quipper について

音声文字起こしの機能活用

字幕機能

講義動画検索機能

音声文字起こしパイプラインの構築

GCP サービスの活用

人と AI の共存

まとめ

(59)

まとめ

Cloud Speech-to-Text と Cloud Composer を用いることで以下を実現

開発期間の大幅な短縮

高速な音声文字起こし処理

Cloud Speech-to-Text を採用した理由

学習データが不要, ドメイン知識が不要, 汎用的なタスク

Cloud Composer を採用した理由

DAG の定義のしやすさ, マネージド・サービス, 活発なコミュニティ

Human-in-the-Loop, GitOps の仕組みを整備することで、より高品質な文字起こしを

安全に安定的に提供

(60)

参照

関連したドキュメント