音声
- 音声ファイルのよくある用途
- 音声ファイルのアップロード
- 音声ファイルフォーマット/エンコード
- 音声ファイルのホスト/配信
- 音声ファイルの加工
- 音声ファイルの再生プレイヤー
- 音声ファイルの再生トラッキング
- 音声のストリーミング配信/ライブ配信/P2P通信
- 音声の解析
Google Cluod Speech、Nuance
音声ファイルのよくある用途
- 音楽配信: Apple Music, SoundCloud, spotify
- ポッドキャスト配信: Podcast iTunes
- ライブ配信: Youtube, niconico (動画がメイン)
- ボイス投稿: Anchor
- ボイスチャット: Skype, LINE (映像も可能)
音声管理/音声配信/音声共有/音楽プレイヤー/音声通話
参考
音声ファイルのアップロード
クライアントでの選択方法
- ブラウザ: HTMLのinputタグでtypeをfileにして、画像を選択
- または、HTML5のDnD APIで複数枚のFileを取得する
- jQueryにしろReactにしろ、それぞれやり方ある
- iOS: AlamofireでNSDataとしてファイルを選択する
- カメラの起動、カメラロールからの取得など
- Androidも同様(いくつかライブラリがある)
ファイルアップロード
- multipart/form-dataでアップロードする
pre-flightでS3に画像をアップ
メインサーバーでは、選択された画像のメタデータだけ送信し、認証処理と画像のvalidationを完了したら、S3へのアクセストークンを返却し、クライアントから直接画像をS3にアップロードする。メインサーバーの負荷を減らすためにも、直接アップロードしたほうがお得。CORSに注意が必要。
音声ファイルフォーマット/エンコード
- MP3
- AAC
- WMA
- WAV
Elastic Transcoder でのエンコード
S3にアップロード後、LambdaをTranscoderを呼び出し、エンコードし、Bucketに設置。
参考
- 音声ファイルフォーマット - Wikipedia
- 音声コーデックの種類と違い(MP3・AAC・WMA・WAV・Vorbis・AC3・FLAC等)【フォーマット】
- 音声ファイルの主な形式と特徴|コーデック・MP3・AAC・Ogg
- 今さら聞けない!? WAV、MP3など音楽ファイル形式のおさらい
音声ファイルのホスト/配信
- WEBサーバーと同じ場所にホスト: Nginxが稼働しているファイルシステムと同じ場所にホスト
- S3など専用ファイルサーバーにホスト: サーバー経由またはクライアントからダイレクトで送る
- AkamaiなどのCDNから配信: CDNにキャッシュさせて配信する
- CloudFront(AWS), Cloudflare, Fastlyなど
音声ファイルの加工
- ノイズ除去
- 切り取り
- 合成
音声ファイルの再生プレイヤー
- HTML5のaudioタグ, JavaScriptのライブラリ, Flashのライブラリ
- iOS(Swift): AVPlayer
- Android(Java): VideoView
参考
音声ファイルの再生トラッキング
- 再生状況
- 飛ばしたポイント
- 途中離脱のポイント
音声のストリーミング配信/ライブ配信/P2P通信
- Create a Simple Music Streaming App with Ruby on Rails
- Linuxとフリーソフトでライブ動画配信サーバーを構築する - idinorの日記
- ニコニコ動画のダウンロードツールをRubyで書いてみた。(その2) - いものやま。
プロトコル
- HLS(m3u8), TCP, UDP, RTMP, SRTP/DTLS/SCTP(WebRTC)
- Real Time Messaging Protocol - Wikipedia
- HTML5 live streaming - Stack Overflow
WebRTC
音声の解析
- 波形抽出
- GCP, AzureのAPIを利用した言語処理(テキスト書き出しなど)
benalavi/waveform: Generate waveform images from audio files