SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
1
Voicyを支える技術
株式会社Voicy
2
自 己 紹 介
株式会社 Voicy
CTO 窪田雄司
1999年からエンジニア。2015年からVoicyに関わり始め、AWSを本
格的に触り始めたのもその頃から。2012年からモノノフ
好きなAWS:Elastic Beanstalk
好きな言語:Java、Go、Swift
Twitter: @yuji0316
サービス 紹介
① 提携メディアの記事を使って
② スマートフォンで手軽に音声収録
③ 様々なデバイスから配信されます。
録音処理フロー
ユーザー
Elastic
Beanstalk
S3RDS
SNS
SNS
Lambda
Elastic Transcoder
Lambda
1.音声アップロード
2.ステータスを”処理中”
でレコード登録
3.エンコード前の
音声ファイルを配置
4.SNS登録 5.Subscribe
6.JOB登録
9.Subscribe
8.完了通知
7.音声ファイルを
MP3にエンコード
10.ステータスを”完了”に更新
Q. 3でS3にファイルを置いたトリガーで
ElasticTranscoder起動すれば右上のSNSと
Lambdaは不要になるのではないか。
A. 10でRDSを更新するために対象レコードのID
を持ち回る必要がある。6でLambdaがJOBを作成
する際、TranscoderのUserDataにそのIDをセッ
トすることで受け渡しを行っている。
録音処理フロー( 音声ファ イ ル結合処理 )
ユーザー
S3RDS
1.音声アップロード
2.ステータスを”処理中”
でレコード登録
EC2
S3
VPC subnet VPC subnet
ECS
3.エンコード前の
音声ファイルを配置
3.処理対象レコード
を常にチェック
4.RESTでECSの
結合処理APIを呼び出し
6.結合したファイルを
S3に配置
CloudFront
5.結合元ファイル
を取得
音声編集処理API用VPNVoicy用VPN
Elastic
Beanstalk
再生処理フロー(WE B 、ス マ ホアプリ )
ユーザー
S3
RDS
Cloud Front
Elastic Load
Balancing
Availability Zone
EC2
RDS
Availability Zone
EC2
Auto Scaling group
Elastic Beanstalk container
(Backup)
Cognito Mobile Analytics
OAuthログイン
画像/音声
ファイル取得
Cognito Elasticsearch
行動ログ収集
S3 Data Pipeline
DBのデータを解析用
に日次でS3に配置
Kibana
可視化
プッ シュ 通知 T oken 収集フロー
ユーザー ElasticBeanstalk
DynamoDB
SNS
SNS
Lambda
SNS
Application
Lambda
1.起動/ログイン/ログアウト
にToken送信
2.SNS登録
3.Subscribe
4.Token登録or更新
7.Subscribe
6.Deleted/Failureイベント
5.Token登録or更新
8.Token削除
Q.なぜDynamoDBに値を保存しておく必要があるのか。
A.以下の2つの値からそれぞれSNS Applicationの
EndpointARNの逆引きが必要なため。
[Token]
5の登録or更新処理の判断で登録済み確認が必要だが、
SNS ApplicationはTokenをキーに検索できない。また、
更新処理にはARNを指定する必要があるため、Tokenを
キーにARNを取得する必要がある。
[ユーザーID]
特定のユーザーにのみプッシュ通知を送信するために、
それぞれのユーザーIDからARNを取得する必要がある。
SNS Applicationの値が削除さ
れたり、プッシュ通知が失敗し
てFailureイベントが発生した場
合にDynamoDBの値を削除。
プッ シュ 通知送信フロー
ユーザー ElasticBeanstalk
DynamoDB
SNS
Lambda
SNS
Application
1.何らかのアクション 2.SNS登録
3.Subscribe
4.メッセージ送信
5.送信対象のARN取得
ス マ ートス ピーカ ー配信フロー
ElasticBeanstalkLambda
3.API呼び出し
API Gateway
Amazon Echo
G○○Gle H○me
1.HTTP呼び出し
1.Lambda呼び出し(カスタムスキルの場合)
2. Lambda呼び出し
1.HTTP呼び出し
(フラッシュブリーフィングの場合)
そ の 他
ElasticBeanstalk
Lambda
2. ビルド
Code Pipeline
Code Build
SAM Local (ベータ版)
1. Pushトリガー 3. デプロイ
自動デプロイ
Lambdaファイル管理
2. デプロイ
1. ローカル環境で
Lambdaを開発・実行
GitHub
今 後使用したい AWS サ ー ビス
11
La m b d aのG oサポート
re:Invent 2017 にてLambdaの
Go(と.NEW)のサポートが発表された
現時点でもほげほげするとGoで動くら
しいが、公式でのサポートはうれしい
が、まだプレアナウンスということで、
いつから使えるかは未定
教えて中の人!
リリースされたら現在Node.jsで書いて
いるものをGoに移行したい!
+
A m a zo n Po lly
テキストの音声変換サービス
現在日本語は男性、女性それぞれ1パターンずつ対応
Voicyでは人の声だけではなく、合成音声も声の1つとして感
心は持っている
A m a zo n T ra n sc rib e
音声をテキストに変換するサービス
現在は米国東部(バージニア北部)リージョンのみ
アイコンは未定
音声をテキスト化することにより、音声内容の検索が可能とな
る。任意のキーワードを話した音声ファイルと何分何秒目にそ
のキーワードが出現するかを一覧表示とかできるとアツい!
声で伝わる 声で彩る 声の可能性をもっと広げる
今 日 を 彩 る ボ イ ス メ デ ィ ア
15

Más contenido relacionado

Similar a Voicyを支える技術

JUIZ DLK: 組込み向け Deep Learning コンパイラ
JUIZ DLK: 組込み向け Deep Learning コンパイラJUIZ DLK: 組込み向け Deep Learning コンパイラ
JUIZ DLK: 組込み向け Deep Learning コンパイラTakeo Imai
 
スマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTCスマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTCNatsuki Yamanaka
 
Firefox OS カスタム ROM の作成
Firefox OS カスタム ROM の作成Firefox OS カスタム ROM の作成
Firefox OS カスタム ROM の作成Honma Masashi
 
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介Yuki Takahashi
 
JAWS-UG 大分勉強会 | IoT/セキュリティ/FinTechの話を聞いてみよう!IoTの部
JAWS-UG 大分勉強会 | IoT/セキュリティ/FinTechの話を聞いてみよう!IoTの部JAWS-UG 大分勉強会 | IoT/セキュリティ/FinTechの話を聞いてみよう!IoTの部
JAWS-UG 大分勉強会 | IoT/セキュリティ/FinTechの話を聞いてみよう!IoTの部SORACOM,INC
 
MediaCanvas Inc (Japanese version)
MediaCanvas Inc (Japanese version)MediaCanvas Inc (Japanese version)
MediaCanvas Inc (Japanese version)A-type Company
 
[OpenStack Days Tokyo 2015] Zabbixを用いたOCPベアメタル監視環境構築の自働化
[OpenStack Days Tokyo 2015] Zabbixを用いたOCPベアメタル監視環境構築の自働化[OpenStack Days Tokyo 2015] Zabbixを用いたOCPベアメタル監視環境構築の自働化
[OpenStack Days Tokyo 2015] Zabbixを用いたOCPベアメタル監視環境構築の自働化cloudconductor
 
JUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep LearningコンパイラJUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep LearningコンパイラLeapMind Inc
 
マルチデバイスVod/live配信サービス 提案書
マルチデバイスVod/live配信サービス 提案書マルチデバイスVod/live配信サービス 提案書
マルチデバイスVod/live配信サービス 提案書oo_cheke
 
5 mnu pbox_solftlayer_summit
5 mnu pbox_solftlayer_summit5 mnu pbox_solftlayer_summit
5 mnu pbox_solftlayer_summitchenree3
 
5 mnu pbox_solftlayer_summit
5 mnu pbox_solftlayer_summit5 mnu pbox_solftlayer_summit
5 mnu pbox_solftlayer_summitsoftlayerjp
 
PUSH通知証明書作成ツールを作った
PUSH通知証明書作成ツールを作ったPUSH通知証明書作成ツールを作った
PUSH通知証明書作成ツールを作ったTomoki Hasegawa
 
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalkShozo Okada
 
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalkShozo Okada
 
Osc2009tokyofall xoops groupware
Osc2009tokyofall xoops groupwareOsc2009tokyofall xoops groupware
Osc2009tokyofall xoops groupwareYoshi Sakai
 

Similar a Voicyを支える技術 (20)

Keep a diary
Keep a diaryKeep a diary
Keep a diary
 
JUIZ DLK: 組込み向け Deep Learning コンパイラ
JUIZ DLK: 組込み向け Deep Learning コンパイラJUIZ DLK: 組込み向け Deep Learning コンパイラ
JUIZ DLK: 組込み向け Deep Learning コンパイラ
 
スマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTCスマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTC
 
Firefox OS カスタム ROM の作成
Firefox OS カスタム ROM の作成Firefox OS カスタム ROM の作成
Firefox OS カスタム ROM の作成
 
Voice over20180722
Voice over20180722Voice over20180722
Voice over20180722
 
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
 
AWS IoT アップデート 2016.02.16
AWS IoT アップデート 2016.02.16AWS IoT アップデート 2016.02.16
AWS IoT アップデート 2016.02.16
 
JAWS-UG 大分勉強会 | IoT/セキュリティ/FinTechの話を聞いてみよう!IoTの部
JAWS-UG 大分勉強会 | IoT/セキュリティ/FinTechの話を聞いてみよう!IoTの部JAWS-UG 大分勉強会 | IoT/セキュリティ/FinTechの話を聞いてみよう!IoTの部
JAWS-UG 大分勉強会 | IoT/セキュリティ/FinTechの話を聞いてみよう!IoTの部
 
MediaCanvas Inc (Japanese version)
MediaCanvas Inc (Japanese version)MediaCanvas Inc (Japanese version)
MediaCanvas Inc (Japanese version)
 
[OpenStack Days Tokyo 2015] Zabbixを用いたOCPベアメタル監視環境構築の自働化
[OpenStack Days Tokyo 2015] Zabbixを用いたOCPベアメタル監視環境構築の自働化[OpenStack Days Tokyo 2015] Zabbixを用いたOCPベアメタル監視環境構築の自働化
[OpenStack Days Tokyo 2015] Zabbixを用いたOCPベアメタル監視環境構築の自働化
 
Softlayer勉強会#2
Softlayer勉強会#2Softlayer勉強会#2
Softlayer勉強会#2
 
JUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep LearningコンパイラJUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep Learningコンパイラ
 
マルチデバイスVod/live配信サービス 提案書
マルチデバイスVod/live配信サービス 提案書マルチデバイスVod/live配信サービス 提案書
マルチデバイスVod/live配信サービス 提案書
 
5 mnu pbox_solftlayer_summit
5 mnu pbox_solftlayer_summit5 mnu pbox_solftlayer_summit
5 mnu pbox_solftlayer_summit
 
5 mnu pbox_solftlayer_summit
5 mnu pbox_solftlayer_summit5 mnu pbox_solftlayer_summit
5 mnu pbox_solftlayer_summit
 
PUSH通知証明書作成ツールを作った
PUSH通知証明書作成ツールを作ったPUSH通知証明書作成ツールを作った
PUSH通知証明書作成ツールを作った
 
Demo120724
Demo120724Demo120724
Demo120724
 
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk
 
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk
 
Osc2009tokyofall xoops groupware
Osc2009tokyofall xoops groupwareOsc2009tokyofall xoops groupware
Osc2009tokyofall xoops groupware
 

Último

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 

Último (7)

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 

Voicyを支える技術

  • 2. 2 自 己 紹 介 株式会社 Voicy CTO 窪田雄司 1999年からエンジニア。2015年からVoicyに関わり始め、AWSを本 格的に触り始めたのもその頃から。2012年からモノノフ 好きなAWS:Elastic Beanstalk 好きな言語:Java、Go、Swift Twitter: @yuji0316
  • 3. サービス 紹介 ① 提携メディアの記事を使って ② スマートフォンで手軽に音声収録 ③ 様々なデバイスから配信されます。
  • 4. 録音処理フロー ユーザー Elastic Beanstalk S3RDS SNS SNS Lambda Elastic Transcoder Lambda 1.音声アップロード 2.ステータスを”処理中” でレコード登録 3.エンコード前の 音声ファイルを配置 4.SNS登録 5.Subscribe 6.JOB登録 9.Subscribe 8.完了通知 7.音声ファイルを MP3にエンコード 10.ステータスを”完了”に更新 Q. 3でS3にファイルを置いたトリガーで ElasticTranscoder起動すれば右上のSNSと Lambdaは不要になるのではないか。 A. 10でRDSを更新するために対象レコードのID を持ち回る必要がある。6でLambdaがJOBを作成 する際、TranscoderのUserDataにそのIDをセッ トすることで受け渡しを行っている。
  • 5. 録音処理フロー( 音声ファ イ ル結合処理 ) ユーザー S3RDS 1.音声アップロード 2.ステータスを”処理中” でレコード登録 EC2 S3 VPC subnet VPC subnet ECS 3.エンコード前の 音声ファイルを配置 3.処理対象レコード を常にチェック 4.RESTでECSの 結合処理APIを呼び出し 6.結合したファイルを S3に配置 CloudFront 5.結合元ファイル を取得 音声編集処理API用VPNVoicy用VPN Elastic Beanstalk
  • 6. 再生処理フロー(WE B 、ス マ ホアプリ ) ユーザー S3 RDS Cloud Front Elastic Load Balancing Availability Zone EC2 RDS Availability Zone EC2 Auto Scaling group Elastic Beanstalk container (Backup) Cognito Mobile Analytics OAuthログイン 画像/音声 ファイル取得 Cognito Elasticsearch 行動ログ収集 S3 Data Pipeline DBのデータを解析用 に日次でS3に配置 Kibana 可視化
  • 7. プッ シュ 通知 T oken 収集フロー ユーザー ElasticBeanstalk DynamoDB SNS SNS Lambda SNS Application Lambda 1.起動/ログイン/ログアウト にToken送信 2.SNS登録 3.Subscribe 4.Token登録or更新 7.Subscribe 6.Deleted/Failureイベント 5.Token登録or更新 8.Token削除 Q.なぜDynamoDBに値を保存しておく必要があるのか。 A.以下の2つの値からそれぞれSNS Applicationの EndpointARNの逆引きが必要なため。 [Token] 5の登録or更新処理の判断で登録済み確認が必要だが、 SNS ApplicationはTokenをキーに検索できない。また、 更新処理にはARNを指定する必要があるため、Tokenを キーにARNを取得する必要がある。 [ユーザーID] 特定のユーザーにのみプッシュ通知を送信するために、 それぞれのユーザーIDからARNを取得する必要がある。 SNS Applicationの値が削除さ れたり、プッシュ通知が失敗し てFailureイベントが発生した場 合にDynamoDBの値を削除。
  • 8. プッ シュ 通知送信フロー ユーザー ElasticBeanstalk DynamoDB SNS Lambda SNS Application 1.何らかのアクション 2.SNS登録 3.Subscribe 4.メッセージ送信 5.送信対象のARN取得
  • 9. ス マ ートス ピーカ ー配信フロー ElasticBeanstalkLambda 3.API呼び出し API Gateway Amazon Echo G○○Gle H○me 1.HTTP呼び出し 1.Lambda呼び出し(カスタムスキルの場合) 2. Lambda呼び出し 1.HTTP呼び出し (フラッシュブリーフィングの場合)
  • 10. そ の 他 ElasticBeanstalk Lambda 2. ビルド Code Pipeline Code Build SAM Local (ベータ版) 1. Pushトリガー 3. デプロイ 自動デプロイ Lambdaファイル管理 2. デプロイ 1. ローカル環境で Lambdaを開発・実行 GitHub
  • 11. 今 後使用したい AWS サ ー ビス 11
  • 12. La m b d aのG oサポート re:Invent 2017 にてLambdaの Go(と.NEW)のサポートが発表された 現時点でもほげほげするとGoで動くら しいが、公式でのサポートはうれしい が、まだプレアナウンスということで、 いつから使えるかは未定 教えて中の人! リリースされたら現在Node.jsで書いて いるものをGoに移行したい! +
  • 13. A m a zo n Po lly テキストの音声変換サービス 現在日本語は男性、女性それぞれ1パターンずつ対応 Voicyでは人の声だけではなく、合成音声も声の1つとして感 心は持っている
  • 14. A m a zo n T ra n sc rib e 音声をテキストに変換するサービス 現在は米国東部(バージニア北部)リージョンのみ アイコンは未定 音声をテキスト化することにより、音声内容の検索が可能とな る。任意のキーワードを話した音声ファイルと何分何秒目にそ のキーワードが出現するかを一覧表示とかできるとアツい!
  • 15. 声で伝わる 声で彩る 声の可能性をもっと広げる 今 日 を 彩 る ボ イ ス メ デ ィ ア 15