物置小屋

メモ置き場

MediaRecorderを使って音声録音したら再生時間が取れなかった件

はじめに

IPFactory Advent Calendar 2019 12日目の記事です。

qiita.com

インターン先で、ブラウザで音声入力からの音声解析してチャットボットぽいものを作る機会がありました。 その際、ブラウザでの音声入力で詰まった点があったので適当に書く予定です。

一応言っておきますが、全てPC版のChromeで試しています。Firefox等他のブラウザでは一切試していないのであしからず。

MediaRecorderを使ってサクッと音声録音してみよう

まず、ブラウザで音声入力をするにはどうすればいいだろうか?
調べてみたところWebRTCという技術があり、getUserMediaMediaRecorderというものを使えば楽に音声入力が実現できそうでした。

ということでサクッとJSから音声録音を実現するために書いたコードが以下のものとなっています。

github.com

デモページも用意しました。下記リンクに飛べば実際に録音して、再生、ダウンロードを試すことができます。

mnao305.github.io

録音ボタンを押すと録音が開始されますが、その際ブラウザからマイクの許可が求められます。

ソースコード内のコメントでも書いてあるが、MediaRecorderではwebmしか使えないらしい。 webmとはGoogleが開発しているフリーのメディアフォーマット。

今回はwavを使いたかったのでそれも後ほど解決します。

動画長さが存在しない

さて、上記のデモを試してみたらわかるが、この録音した音声データには再生時間が存在していません。

> ffprobe test.webm -hide_banner
Input #0, matroska,webm, from 'test.webm':
  Metadata:
    encoder         : Chrome
  Duration: N/A, start: 0.000000, bitrate: N/A

色々と調べてみたところ、これはChromeのバグとして報告されていました。

bugs.chromium.org

ですが、WontFixとなっています。
上記Issueにも書いてある通り、W3Cの方のIssueにも上がっていました。

github.com

ということでこれはバグと言うより仕様みたいです。

webmではなくwavで保存し、動画長さを追加する。

色々と試してみた結果、解決するために実際にやったのはファイルヘッダを書き換えてwavにするという方法です。

コードを見てもらったほうがわかりやすいと思うので、下記にGitHubへのリンクを張っておきます。

github.com

デモページ

mnao305.github.io

wavで保存され再生時間も取れているのがわかる。

> ffprobe.exe test.wav -hide_banner
Input #0, wav, from 'test.wav':
  Duration: 00:00:10.77, bitrate: 705 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 1 channels, s16, 705 kb/s

この方法の何が嬉しいかというと、wavにできること、追加でライブラリがいらないことなどですかね。
ということでコードの説明を軽くします。

// TODO 後で書く

参考

ユーザーから音声データを取得する  |  Web  |  Google Developers

Inside WebM

GitHub - grishkovelli/vue-audio-recorder: A simple audio recorder for VueJS applications

WAVEファイルの構造

情報処理安全確保支援士試験に合格した話

はじめに

4月に実施された平成31年春季情報処理安全確保支援士試験に受験し、無事合格することができました。

f:id:mnao_305:20190621172204p:plain

自己採点では合格できるか半々だったのでなんとか合格点いってくれて安堵してます。

やった勉強とか、てきとうに何か書いていきます。

20190711追記

合格証書届いた、うぇい。

情報処理安全確保支援士試験とは?

情報処理安全確保支援士試験(略号:SC)は、情報セキュリティスペシャリスト試験の後継となる試験で情報セキュリティに関する高度な知識・技能(スキルレベル4)を認定する試験である。
暗号化技術やサイバー攻撃対策といった情報セキュリティの一般知識に加えて、セキュアプログラミング、ネットワークといった要素技術も問われる。試験の水準は高く、情報セキュリティに関する資格試験では国内最難関にあたり、実務経験者であっても合格するのは難しい試験として広く認知されている。
Wikipediaより引用

上記の通り情報処理技術者試験の区分の中で一番上のレベル4の高度試験に属する資格です。合格率は17%ほど。
前は「情報セキュリティスペシャリスト試験」と言われていたものです。

初めて合格したレベル4の試験。正直とても嬉しい。
だが、安全確保支援士と名乗るためには登録しないといけないが、登録料も更新料も高いので学生には厳しい。
会社がお金出してくれるとかない限り登録することはないと思う。

全体を通しての勉強法

情報処理教科書 情報処理安全確保支援士 2019年版

情報処理教科書 情報処理安全確保支援士 2019年版

まず、全体的にセキュリティの知識を身に着けようとこの本を購入。(なお、半分までしか読んでない模様)

試験が近づいてきた頃は、この本で急いで知識のインプット+午後試験での出題パターンの確認などをしてました。

午前試験へ向けてやった勉強

午前1は前回応用情報を取ったので免除でした。

mnao305.hatenablog.com

午前2対策の方は過去問道場を無限にやっていました。

www.sc-siken.com

間違えた問題を見れたり、正答率が確認できたりと便利。
とりあえず正答率8,9割取れてれば安心かなと言う感じ。

午後試験へ向けてやった勉強

無限に過去問を解いて問題になれる、と最初の方は思っていたけど結局解いた過去問は2,3回ほど。正直問題を読むのがかなり面倒くさい。
Twitterの140文字お気持ちついですらクソ長い…と思ったりするのに、何ページにもわたる文章を読むのなんか無理である。

とりあえず上で上げた本読んで知識吸収すればいいんでないかなという感じ。

「速効サプリ®」情報処理安全確保支援士 2019春

「速効サプリ®」情報処理安全確保支援士 2019春

あと、これを直前に読んだりした。

いい勉強法があるのなら知りたい

終わりに

特に書くことがないのでこんなもので。

とりあえず、なんとか一発合格できてよかったという気持ち。
だけど、点数からも分かる通り知識がしっかりと身についたとは言えないので復習しなくては。

次回はネスペを受けようかな。