始めに
こんにちは、Webエンジニアのかずまと申します。
自分は1年前にエンジニアになったのですが、その中で作り上げた知の結晶をオープンソースとして公開しみんなで開発・保守していくOSSという文化にとても感激しました。
自分もいつかコントリビュートしたり(チャレンジしていますが、中々難しい!笑)、OSSを公開して少しでも役に立てればと思っていました。
今回自分が休日に作っていたSlackbotが完成したので、文字起こし等で困っている方の力になれればと思いOSSとして公開します。(色んなサービスの繋ぎ合わせなので、これをOSSと呼べるのか分かりませんが。。。)
リポジトリURL:https://github.com/creamstew/transcribe-slack-bot
何を作ったか
タイトルの通り、投稿された音声データを自動で文字起こししてくれるSlackBotです。
Botが参加しているチャンネルに音声ファイル(mp4等も可)を投稿すると、その音声が文字起こしされたテキストファイルが返ってきます。
このように非エンジニアでも簡単に使うことができます。
なぜ作ったか
自分の今勤めている企業は一つの柱としてメディア事業を行っています。
その中でインタビューした音声を文字起こししたり、編集した動画に文字テロップを入れるために動画内容を文字起こしするケースが結構ありました。10分の音声も全て文字起こしするとなると1時間くらいかかるので、これが結構大変そうでした。
人数も多くない会社なので文字起こしするという作業だけで時間を消耗しているのはもったいないなと思い、勉強も兼ねてちょっと個人的に作ってみようと思ったのがきっかけです。
構成
基本的にはSlackのAPIとAWSのサービスを連携させておりサーバーレス運用、デプロイもサーバーレスフレームワークによりコマンド一発でできるようにしています。
今の会社はSlackでコミュニケーションを取っているので、非エンジニアでもSlack上で簡単にシステムが使えるようにこの構成にしました。
文字起こしまでの流れ
- SlackAPIがチャンネルへの投稿を検知して、API Gatewayにその情報を渡す
- API GatewayをトリガーにLambdaが起動し、音声ファイルをS3に保管する
- S3をトリガーにLambdaが起動し、保管した音声ファイルをAWS Transcribeで文字起こしする
- 文字起こしされた情報がJSONファイルとしてS3に保管される
- 保管されたJSONファイルをトリガーにLambdaが起動し、JSONファイルから文字起こしされた情報のみをテキストファイル化して、Slackに投稿
使用技術・サービス
- Serverless Framework
- AWS(Amazon Transcribe, S3, Lambda(Ruby2.5), Lambda Layer, API Gateway, S3)
- Slack API
肝心の文字起こしの精度は?
今回文字起こしには、2019年の11月ごろに日本語対応されたAWSのTranscribeというサービスを使っています。
ざっくりいうと、60分の音声だったら20分150円で文字起こししてくれる優れものです。
肝心の精度についてはすでに別記事で書いていまして、
結論、インタビュー形式であればかなりの高精度で文字起こししてくれるので、ライターのインタビューの文字起こしや動画編集者のテロップを入れるための動画の文字起こしなどの用途ではかなり活用できると思います。
詳しい説明は公式サイトや他の記事をご覧ください。
作ってみて
こちらのSlackbotを社内で使ってもらったところ、結構評判が良くて嬉しかったです。
ほとんどコードも書いていなくてサービスを繋ぎ合わせただけなのですが、ちょっとしたことでも社内の課題を解決できるんだと思える良い経験になりました。
下記がSlackbotのGitbubになります。まだまだ改善点もあるのですが、同じように社内で困っている人などいらっしゃればぜひ使ってみていただけると嬉しいです!