第33話
LIGPR
使ってみた

Twitterで本当に「つぶやける」仕組みをつくってみたら、世界が少しだけ変わった


Twitterで本当に「つぶやける」仕組みをつくってみたら、世界が少しだけ変わった

BUFFALO-30

こんにちは、エンジニアののびすけです。

BUFFALO-30 人物紹介:菅原のびすけ
エンジニア
ガジェットを面白くハックするのが趣味

僕は、世間の理不尽さにイラ立っています。

 
BUFFALO-3

いまTwitterを見ているんですけど、このつぶやきって実際は「本当のつぶやき」じゃないですよね? なのに、つぶやき、つぶやきって……

 
BUFFALO-4

おかしくないですか??

そもそも、”つぶやき”って何でしょうか。

調べてみたところ、「小さい声でひとりごとを言うこと」のようです。

 
BUFFALO-5

でも、俺の知っている人たち、みんな文章をつくって投稿してるんですよね。

やっぱり本当のつぶやきじゃないですよね?

というわけで、つくってみる

BUFFALO-6

本当のつぶやきをつぶやけるシステム」をつくってみようと思います。

構図はこんな感じ。

 
構成図02.001

1.つぶやきを集音
2.音声をテキスト化してサーバーへ送信
3.サーバー上のNode.jsからTwitterAPIにアクセス
4.あらかじめ作成しておいたbotへツイート

という流れで構築していきます。

1.つぶやきを集音

今回の声の集音に使うのは、偶然PRをお願いされていたこの製品。
 
BUFFALO-7

Buffaloヘッドセット「BSHSBE34」

本来電話につかうものですが、声も拾ってくれるのでつぶやきを拾うには最適です。この製品はBluetoothデバイスなので、ホストとなるPC(or Android)デバイスとはBluetoothペアリングとなります。

2.音声をテキスト化してサーバーへ送信

音声認識には、HTML5の機能である「Web Speech API」を使います。

 
ChromeWebSpeechAPI

実装するにあたって、いろんな企業が開発しているAPIも調べてみたのですが、サンプルを使ってみて一番精度が高かったのが、Web Speech APIでした。HTML5の機能ということもあり、もちろん無料です。日本語の情報もそこそこ多いので”APIによる初見殺し”みたいな状況には陥らないだろうという安心感もありました。

このWeb Speech APIを使い音声をテキスト化し、その後サーバーへ送信します。

3.サーバー上のNode.jsからTwitterAPIにアクセス

今回は、もっとも個人的に慣れているNode.jsを使っています。

サーバーは、AzureじゃなくてもAWSやGCP、herokuでも問題ないですが、最近密かに注目しているAzureを使用しました。
 
構成図01.001

送られてきたテキストをNode.jsで受け取り、TwitterAPIにアクセスしてツイートする処理をします。

4.あらかじめ作成しておいたbotへツイート

Twitterはディベロッパー登録することでbotなどをつくることが可能です。ディベロッパー登録後に発行可能な認証用のキーが必要ですが、数行のプログラムの記述だけで簡単にbotがつくれます。
 
紳さんTwitter

ディベロッパー登録をしてあらかじめつぶやき専用botアカウントをつくっておきます。今回は、ひとりでブツブツと小言を言っていそうなLIGの社員・紳さんに協力を依頼するため、紳さんbotを作成しました。

ちなみに、TwitterAPIをNode.jsから扱う方法はこちらを参考にどうぞ。

これで、完成です!

実際に試してみる

早速、今回の企画に協力してもらう紳さんの元に向かいます。
 
BUFFALO-8

紳さん抜き 人物紹介:紳さん
LIGのライター。いつもひとりごとをブツブツ言っていそうな人

BUFFALO-9

紳さんには”本当のつぶやきをつぶやけるシステムを作った”ことを説明して協力してもらいました。
 
BUFFALO-10
BUFFALO-11

装着は完了です。これでペアリングをすれば、つぶやきがツイートされます。周りの音が入らない会議室で試してもらいたいので、会議室を用意しておきました。
 
BUFFALO-12

あとはTwitter画面を見て、紳さんのつぶやきがつぶやかれるのを待ちます。
 
BUFFALO-15

 

 

BUFFALO-13

BUFFALO-14

「疲れた」


 
「おしるこ食べたい」


 
「死にたい」


 
「ライジングストーム」


 
「あー」


 
「早く死にたい」


 
「ちくしょう」


 
「疲れてる」


 
「カニカマ」


 
「ベッキー」

 
BUFFALO-16

だだ漏れです。
 
BUFFALO-17

言葉を発するとどんどんツイートされていくので、本当のつぶやきをつぶやけていますね。

外でも試してみる

さらに協力をお願いして、外でも試してもらうことにしました。
 
BUFFALO-18

BUFFALO-19

「……人多いな」


 
BUFFALO-20
BUFFALO-21

「なるほど、なるほど」


 
BUFFALO-22

「500円のやつで」


 
BUFFALO-23
BUFFALO-24

「ケバブおいしい」


 
BUFFALO-25

「死にたい死にたい」


 
BUFFALO-26
やっぱりだだ漏れですね。

 
BUFFALO-27
BUFFALO-28

無事に、紳さんの「本当のつぶやき」が、次々とツイートされているのを確認できました。

今回、紳さんのTwitterを作成しましたが、紳さんはTwitterをやっていません。これを機にみなさんがフォローをしてくれたらTwitterを始めるかもしれませんので、ぜひフォローしてみてください。

おわりに

BUFFALO-29

いかがでしたでしょうか?

みなさん、これが本当のつぶやきというやつです。

今回の企画は、リアルなつぶやきをTweetするというところが肝でしたが、これには音声認識の精度が重要になります。今までは音声認識の仕組みをつくるって言ったらかなり大掛かりなことだったのですが、Webの知識だけでこんなにカジュアルに実装できるようになっていたのは驚きです。最近はハードウェアやガジェットばかり触ってましたが、Web技術もやっぱり重要ですね。

ちなみに、今回の企画で集音マイクとして使用したのはこちらのBuffaloヘッドセット「BSHSBE34」でした。

img-main_visual-pic_sp

このヘッドセットは、本来通話が主な用途ですが、今回は「本当のつぶやきをつぶやくシステム」にちょうど良さそうだったので使ってみました。

img-tech_func_mic

この製品は、2つのマイクが搭載されていて、そのうちの1つはノイズをひろってバックグラウンドノイズをカットしてくれるノイズキャンセリング機能がついています。そのため、音声がキレイに拾ってくれるのが最大の特長です。
 


 
BUFFALO-30

今回の企画もそうでしたが、これまでハックできていなかったリアルな文化をハックするのは楽しいですね。可能性も感じます。こういう日常のふとした疑問や、気付いていない課題などを発掘していきたいです。

読者の皆さんもこんなことやってほしい、みたいな声があったら教えてください!

それでは。


この記事を書いた人

のびすけ
のびすけ バックエンドエンジニア 2014年入社
dotstudio株式会社 ( https://dotstud.io )

岩手から上京してきました。

ギークハウスを経て、現在は0円シェアハウスに住んでいます。

好きなスポーツはフットサル/雪合戦/わんこそばです。

2015年は東京Node学園で登壇してみたいです。

・milkcocoa公認エバンジェリストになりました。(https://mlkcca.com/)
・gihyo.jpで記事書いてます (http://gihyo.jp/dev/feature/01/milkcocoa-baas)
・html5experts.jpで記事書いてます。(https://html5experts.jp/n0bisuke/)