iOSアプリ 音声認識機能実装方法 まとめ 記録

iPhone/iPadではキーボードの音声入力ボタンから、iOS標準の音声認識(入力)機能が使えます。
高速で精度はかなり良いですが...

外部参考エントリ: iPhone音声入力すごすぎて笑いが止まらなくなった

キーボードからの音声認識

残念ながら非公開APIであり自作アプリの中でその音声認識機能を単独で使うことはできません。

音声コマンドでアプリコントロールしたり キーボード表示せずさっと音声で入力したい。

何か方法はないものか、と思い iPhone/iPadアプリで音声認識/入力機能を実装する方法を色々と調べてみました。

ここに書いた以外に「こんなサービスもあるよ!」等の情報ありましたら気軽に連絡ください。

2016年1月時点の情報です。

Google Speech API

そこそこ速く精度が高い。

しかし商用利用不可。個人使用のみ。 一日の呼び出し制限50回。 オンラインのみ。

動作させるためにWeb上のダッシュボードから登録が必要です。
内部処理としてwav又はflacファイルを生成し送信します。
APIが受け付ける録音は最大15秒なので、アプリ側で制御する必要があります。

呼び出し回数に関しては対応方法もありますが、結局の所、外に出すアプリには使えません。

Google Speech API ver.2の使い方
Google 音声認識api の制限なしで使う方法(裏ワザ的な)

APIキー部分を入れ替えれば動作するサンプルをgithubに上げておきました。
GoogleSpeechAPI_Sample

API仕様はこちらのREAD MEが参考になりました。
google-speech-v2

docomo 音声認識API

内部的には後述のSpeechRecを使用しています。

速度はGoogleSpeechAPIと同等くらい。
精度はやや落ちるかも。
このあたり、感覚的な発言ですみません...

「私は六本木ヒルズに来ています」

を、はっきりと発声したつもりでしたが

「は六本木ヒルズに来ています」
「土性六本木ヒルズに来ています」
「音六本木ヒルズしています」

となってしまいました。

商用利用不可。個人使用のみ。 オンライン限定です。

発話の区切れ目を自動で検知してくれます。
一時的な音声ファイルを作成する必要がありません。

実装次第で解決可能かもしれませんが
音声認識を並行実行できないので複数人の会話や長い発言の処理は工夫が必要かも。

VocalKit

更新は止まっており、Open Earsを推奨しています。

I no longer advise using VocalKit, as a much better project, Open Ears has come out. http://www.politepix.com/openears/

OpenEars

オフラインで使えます。 高速です。
現在対応しているのは英語とスペイン語のみのようです。

It lets you easily implement round-trip English and Spanish language speech recognition and English text-to-speech on the iPhone

こちらは発言を変換するのではなく、登録した単語と合致するかの判定をします。
そのため音声でのコマンド実行に向いています。

OpenEars™ is free to use in an iPhone or iPad app.

とありますが、商用利用可能かどうか採用する前に確認してください。

フリーの iOS 向け音声認識/音声合成ライブラリ『OpenEars』の使い方
OpenEars 1.6で音声認識を行う

Julius

音声認識エンジン Julius を iOS 8 / Xcode 6で使う

オフラインで動作します。 商用利用も可能です。

正確な辞書を登録せずに動作させてしまっているのか、精度が悪く思った通りには変換されませんでした。
適切に設定したら改善するかもしれません。追求の余地ありです。

IBM Bluemix(有償)

Speech To Text
日本語に対応したSpeech to Text を試してみる
IBM-Watson-Speech-QA-Japanese-iOS
Objective-CアプリでWatsonQAと日本語で会話?してみる

github上の動作手順を追いましたが、最新版では項目が異なっており動作させられませんでした。
すみませぬ。

動作はオンライン前提です。
処理対象の時間に応じ課金されます。

Bluemixの機能の一つとして提供されており、watsonと会話したり他の機能と連動して面白いことができそうです。

SpeechRec(有償)

SDKをダウンロードすると詳しい日本語マニュアルが含まれています。
エラーハンドリングや細かい制御が必要な時にこういう資料があると助かりますね。

速度、精度はdocomoの項を参照してください。

AmiVoice Cloud(有償)

こちら試せませんでした。
iOSSDKがあります。

基本オンラインでの使用です。
オフラインでも、動作に制限あるようですが使用可能なようです。

[番外] UIDictationController

iOS標準機能をどうにかして使えないかと試行錯誤しました。

結論から言うと、キーボードを表示させずに使えたは使えたのですが
一度動作させた後の挙動がおかしい等まともに動作しなかったので忘れることにしました。

仮に動いたとしてもAppStoreに通らないだろうしなぁ。

【Objective-C】iOSで音声認識サンプル(UIDictationController)

現時点での結論

[2016年1月時点] ひと通り試してみて現時点での結論です!

  • 無償で使いたい場合はiOS標準の音声認識機能オフライン化と公開API化を待つ。
  • 単純に音声認識で実験したい場合はGoogle Speech APIを使う。 Sample
  • オフラインでコマンド実行する用途に絞るとOpenEars
  • 有償でも使う場合はAmiVoiceやSpeechRecの窓口に相談

※ 個人の意見です。判断は各自の責任でお願い致します。

雑感

Apple標準の音声認識機能がオフライン対応しています。
参考: 「iPhone 6s」や「iPad Pro」はオフライン時でも音声入力が可能 ー ただし、英語入力のみ

そのうちに日本語もオフラインでできるようになると考えています。

これまで精度の高い変換はオンライン前提だったのですが、オフラインでも可能となっていく流れなのかと。

オフラインで高速に変換できると想定すると活用の幅が広がりますね!

蛇足

音声認識機能を持ったiPadネイティブアプリを作り TechCrunch Tokyo Hackathon 2015 で優秀賞を取りました。
API呼び出しと音声認識機能を持った、少し変わったブレスト/メモツール

電話利用のシンプル決済から店舗行列受付システムまで、TC Tokyoハッカソン優秀作をご紹介 (5. RTNope-D)


Tech Crunch Tokyo 2015のイベント内でLT

ビールを飲み緊張を和らげて臨んだ。

機能・アプリのアイデアは他にもたくさんあるので形にしていきたい。 おっ!!と言わせるモノを作りたいものです。 まだまだ未熟なので修行が必要です。

こちらもチェックしてみてください。
Mashup Awards 11 投稿まとめ!!
2016年のハッカソン開催情報まとめ!

作業記録

昨日の活動ダイジェスト

■ サンプルアプリ作成(iOS)
Webサービス調査 ■ シズオカアプリコンテスト用Webサービス作成


音声認識のサンプルアプリ作成。 やっと一通り試せたか。

オープンデータから面白いサービスってなかなか難しい。 でも素晴らしい物は埋まっているはず。

【雑感】

髪を切りました。 次はボウズにしようかどうか。

【予定】

1/13 PotatoTips

1/21 Twilio 説明会参加

トヨタ生産方式読んだ

昨日の活動ダイジェスト

■ サンプルアプリ作成(iOS)
■ 技術調査
■ シズオカアプリコンテスト用Webサービス作成


音声認識のサンプルアプリ作成。

技術調査は

  • CGリアルタイム合成
  • 海外オープンデータ活用事例
  • 音声認識

【雑感】

トヨタ生産方式からの学びが多数。
ありきたりな感想になってしまうが、今年の新書でも通じる位色褪せない内容だと感じた。

日々の記録をつけるのも良いけれど、読む人に得になるモノも書いていきたいところ。

【予定】

1/13 PotatoTips

1/21 Twilio 説明会参加

作業記録

<今日の活動ダイジェスト>

■ アプリ開発(iOS)
■ 技術調査
■ シズオカアプリコンテスト用Webサービス作成
■ Twilio Smart Communication Award 2016 説明会申込


日中はメインお仕事のiOS開発。

今日の技術調査は

シズオカアプリコンテストのアイデア出し。
ありきたりだと面白くないなー、と。

Twilio主催のビジネスコンテスト説明会に申し込み。
検証中のサービスがあり、それを出す予定。

【雑感】

やる気のハックが必要だ。

【予定】

1/13 PotatoTips

1/21 Twilio 説明会参加

GPSロガーを便利にしたい

<今日の活動ダイジェスト>

■ アプリ開発(iOS)
■ 技術調査
■ シズオカアプリコンテスト用Webサービス作成


今日もまたiOS開発と技術調査しました。

GPSロガー、ヘルスチェックデバイスに関して調査。

あとはシズオカアプリコンテスト用のWebサービス作成。

AWSとフロントエンドの学習も兼ねています。
自分を追い込んで学習の効率を高めていきたい。

フロントエンドはフレームワーク多いですね。
選択肢が多くて非常に迷います。

サーバサイドはAWSに乗っかります。

【雑感】

1/13(水)にPotatoTipsで発表してきます。

渋谷TechLabPaakは一次審査で終了。
これはもう「自分の力でもがいて頑張れ!」ということだろう。

シズオカアプリコンテスト、新規プロダクト、ハッカソン
作りたい物を形にしていきます。締め切り効果。

良く相談される内容

<今日の活動ダイジェスト>

■アプリ開発(iOS)
■技術調査
■相談検討


今日もiOS開発と技術調査しました。

あとは、最近よく相談される内容について検討。

「アプリ開発の見積もり教えてください。」

納期と金額を概算で良いので教えて頂けますか、といった
ご相談を受けることが多いです。

見積もりをして返信しても良いのですが
そもそものところとして
 ・要件が定まっていない
 ・開発に必要な情報が足りていない
ことが多いです。

実のところ、半数以上がこういった状況での相談です。

そんな状態で相談するな!!
という怒りのエントリではなく

逆に

「まだ要件が固まっていない状態だけど
予算感とか見えないとプロジェクト進められないし
その段階から相談したい」

という場面がけっこうあるのでは、と。

【雑感】

オキュラスリフト明日の早朝に予約開始。 欲しい。 老後は1日の半分はバーチャルの世界で暮らすイメージ。

1/13(水)にPotatoTipsで発表してきます。

渋谷TechLabPaak一次審査待ち。

1/5 調整中

今日やったこと

メイン仕事。iOSアプリ開発

bitcoinについて勉強。しかしあまり頭に入ってこず。

画面共有について調査。

WebRTCについて調査。

Qiitaで気になった記事流し読み。

node.jsについて調査。

今朝方、Potatotipsのキャンセル繰り上がりの連絡が来ました。
1/13(水)にiOS Tips発表してきます。

先日、渋谷TechLabPaakの会員申込しました。
書類審査通れば面接です。

実はシリコンバレーに行けるプランへの申し込みもしていたのですが
残念ながら面接の段階で弾かれました。
自分でお金を貯めていけ、という事でしょう。

雑感

ブログの方向性を調整中。

やはり熱い物語や情熱がないと面白くないですね。

という訳で色々試していきます。

ドッキリやパズルやメイキングやミニチュアや気になった技術の話を放り込んでいきたい。

継続

dotinstall +2 平成進化論過去ログ +3