江戸川コナンの推理をWebSpeechAPIの力を借りて検証(若干ネタバレあり)

## 経緯
名探偵コナンのある回で、
>
「知らんぷり」という言葉を英語圏の人は、
「Sit down please」という英語として認識をするはず！
「知らんぷり（Sit down please）」と言っているのに、座っていない”エセ外人！”お前が犯人だ！

というのがある。

ここ最近WebSpeechAPIを使って遊んでいたので、音声認識の言語選択を`en-US`にして試してみたら、、、
`「Sit down please」`なんて認識してくれないじゃないか！！！となった。、、、でもって、ちょっと他の言葉でもなんて認識されるのか試してみたい！！！となったので、「空耳あぷり」というWEBアプリを作ってみた。

## 改めて検証
- さっそく作成した「空耳あぷり」に日本語で「知らんぷり」と語りかけてみた。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">日本語<br>「知らんぷり」<br>英語<br>「she done pretty」<br> <a href="https://twitter.com/hashtag/%E7%A9%BA%E8%80%B3?src=hash&amp;ref_src=twsrc%5Etfw">#空耳</a> <a href="https://twitter.com/hashtag/%E3%81%9D%E3%82%89%E8%80%B3?src=hash&amp;ref_src=twsrc%5Etfw">#そら耳</a> <a href="https://twitter.com/hashtag/%E7%A9%BA%E8%80%B3%E3%81%82%E3%81%B7%E3%82%8A?src=hash&amp;ref_src=twsrc%5Etfw">#空耳あぷり</a> <a href="https://t.co/zJrKKTXKp0">https://t.co/zJrKKTXKp0</a></p>&mdash; 空耳あぷり@β版 (@SoraMimiApp) <a href="https://twitter.com/SoraMimiApp/status/1090232477048655872?ref_src=twsrc%5Etfw">2019年1月29日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


- うーん。「Sit down please」とは認識されずに、「she done pretty」と認識された。
一応ふたつを聞き比べてみると、
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">【知らんぷりの検証】<br>英語<br>「she done pretty」<br>英語<br>「sit down please」<br> <a href="https://twitter.com/hashtag/%E7%A9%BA%E8%80%B3?src=hash&amp;ref_src=twsrc%5Etfw">#空耳</a> <a href="https://twitter.com/hashtag/%E3%81%9D%E3%82%89%E8%80%B3?src=hash&amp;ref_src=twsrc%5Etfw">#そら耳</a> <a href="https://twitter.com/hashtag/%E7%A9%BA%E8%80%B3%E3%81%82%E3%81%B7%E3%82%8A?src=hash&amp;ref_src=twsrc%5Etfw">#空耳あぷり</a> <a href="https://t.co/Fh0k4ByO3W">https://t.co/Fh0k4ByO3W</a></p>&mdash; 空耳あぷり@β版 (@SoraMimiApp) <a href="https://twitter.com/SoraMimiApp/status/1090505286505222144?ref_src=twsrc%5Etfw">2019年1月30日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

- たしかに、「she done pretty」の方が、「知らんぷり」に聞こえる。
「she done pretty」ってなんだよ(笑)
<img width="476" alt="2019-01-30_16h03_32.png" src="https://qiita-image-store.s3.amazonaws.com/0/200345/324b2694-dc36-25eb-01a0-c16a95fb6d15.png">

#### ついでに早口言葉を
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">英語<br>「kind of pickle pickle pickle pickle pic…<br>日本語<br>「かえるぴょこぴょこみぴょこぴょこあわせてぴょこぴょこむぴょこぴょこ」<a href="https://twitter.com/hashtag/%E6%97%A9%E5%8F%A3%E8%A8%80%E8%91%89?src=hash&amp;ref_src=twsrc%5Etfw">#早口言葉</a> <a href="https://twitter.com/hashtag/%E7%A9%BA%E8%80%B3?src=hash&amp;ref_src=twsrc%5Etfw">#空耳</a> <a href="https://twitter.com/hashtag/%E3%81%9D%E3%82%89%E8%80%B3?src=hash&amp;ref_src=twsrc%5Etfw">#そら耳</a> <a href="https://twitter.com/hashtag/%E7%A9%BA%E8%80%B3%E3%81%82%E3%81%B7%E3%82%8A?src=hash&amp;ref_src=twsrc%5Etfw">#空耳あぷり</a> <a href="https://t.co/TxSDdb2flb">https://t.co/TxSDdb2flb</a></p>&mdash; 空耳あぷり@β版 (@SoraMimiApp) <a href="https://twitter.com/SoraMimiApp/status/1090277179055693824?ref_src=twsrc%5Etfw">2019年1月29日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## 開発
`jQuery`でガリガリと書いて、CSSのフレームワークは`Bootstrap`さんの手を借りた。
そして`Firebase Hosting`で公開。画像は`いらすとや`から。

#### リツイート問題
自信のURLをGETパラメータを含んだ形で、動的にリツイートボタンを作るの箇所が苦労をした。

```javascript
function setRt() {
	var spA = $("#eara > div > div:nth-child(2) > div > button").text() + "%0a" + $("#speakA").text()
	var spB = $("#earb > div > div:nth-child(2) > div > button").text() + "%0a" + ("#speakB").text()
	if (50 <= spA.length) {
		spA = spA.substr(0, 45) + "…"
	}
	if (50 <= spB.length) {
		spB = spB.substr(0, 45) + "…"
	}
	var text = `${spA}%0a${spB}%0a${encodeURIComponent(" #空耳 #そら耳 #空耳あぷり")}`
	var tw =
		`
		<a href="https://twitter.com/intent/tweet
		?url=${encodeURIComponent(location.href+"&v=1")}
		&text=${text}
		&related=SoraMimiApp"
		class="badge badge-primary" target="_blank"
		>
		リツイート
		</a>
		`
	$("#tw").html(tw)
}
```

## 実行環境
WebSpeechAPIをつかっているので、使えるブラウザが限られている。

- ChromeはOK
- EdgeやFirefoxは音声認識を利用できず、合成音声の再生も日本語と英語しか再生できない。
- Androidでしか確認をしていないので（Androidユーザ）、iPhoneでどのように動くかは未確認。

## 参考URL
https://app.codegrid.net/entry/2016-web-speech-api-1
http://okakacacao.wpblog.jp/technology/web-speech-api
https://qiita.com/hmmrjn/items/be29c62ba4e4a02d305c