使っているAPI、フレームワーク
最近作ったプロトタイプ 以下のものを使っています
FrontEnd:
Ionic Native (カメラ、音声処理、ストレージなどを利用)
BackEnd:
Firebase
-- Cloud Firestore (DB)
-- Cloud Functions (APIを起こす、ファイル保存、DB書き込み)
-- Cloud Storage (ファイルを保存、ダウンロード)
Google Cloud API
-- Speech API (音声からテキスト変換)
-- Vision API (画像分析)
-- Translate API (言語翻訳)
firebaseのプロジェクトのnpm
"@google-cloud/speech": "^2.1.1",
"@google-cloud/translate": "^2.1.2",
"@google-cloud/vision": "^0.22.1",
"firebase-admin": "~5.12.1",
"firebase-functions": "^1.0.3",
"request-promise": "^2.0.0"
実装した機能
音声
1.音声ファイルを録音し、FireStoreにアップロードする
2.FireStoreの音声ファイルをCloud FunctionでSpeech APIでテキスト変換する
3.テキストをFirestoreに保存し、IonicからFirestoreのテキストデータを取得し、表示する
画像
1.写真を撮影し、FireStoreにアップロードする
2.FireStoreの写真ファイルをCloud FunctionでVision APIでラベル検知する
3.ラベルをTranslate APIで日本語化してからFirestoreに保存する
4.IonicからFirestoreのラベルデータを取得し、表示する
5.写真をダウンロードする機能
音声認識 CloudFunction
export const speechToTextFunc = functions.https.onRequest((request, response) => {
// 音声ファイルの設定
const payload = {
config: {
encoding: 'AMR', // ファイルのタイプ 必須
sampleRateHertz: 8000, // Hertzは自分のファイルに一致する 必須
languageCode: 'ja-JP' // 日本語の音声 必須
},
audio: {
uri: //Google Cloud Storageのパス 必須
}
}
// SPEECH API
const speechClient = new speech.SpeechClient();
speechClient.longRunningRecognize(payload).then(data => {
const res = data[0];
return res.promise();
}).then(data => {
const res = data[0];
const transcription = res.results.map(result => result.alternatives[0].transcript).join('\n');
// Firesotre音声変換したテキスト結果を書き込む
const ref = admin.firestore().collection('orgText').doc(param).set({name: param, text: transcription});
});
});
})
GoogleHomeで20分のニュースを流した結果
「J WAVE ヘッドラインニュースから今日7時のニュースをお送りしますいわきメーカー経理によるされていることがありますサウジアラビア埼玉と千葉2020年東京オリンピックパラリンピックの車両基地などに注意される性格で解体工事が本格化します昨夜港区赤坂の飲食店などが多い中華街でア
ライグマと見られる動物Yahoo ニュースから今日6時のニュースをお送りしますフランスのマクロン大統領と有野エリゼ宮で会談しました総理は階段に先立ち行われた共同記者発表で中国の海洋進出お弁当に国際秩序が挑戦される中日本フランス両国の協力はより重要だ自由で開かれたインド太平
洋のさらなる発展のために力を合わせて協力したいと述べフランスとの海洋安全保障の協力を強化する考えを示しました今日発売の週刊文春片山さつき地方創生担当大臣の口利き疑惑を封じることがわかりました記事によりますと会社経営者が2015私の育った男性に税務調査をめぐる対応
を依頼し指定された口座に100万円を振り込んだところ片山氏自身が国税庁関係者に電話したとしても私は認証出身で10月の内閣改造で初入閣しました産業部品メーカー KYB な建物用免震制震装置の検査データを改ざんしていた問題で全国の自治体は17日改ざんの疑いのある装置が使用され
ていた施設サウジアラビア総領事館で殺害された気がするアメリカのニューヨークタイムズは17日までに普通の容疑者と皇太子と繋がりがあることを示した皇太子は完了を指
定しているものの事情を把握していた疑いが一段とプロ野球日本シリーズクライマックスシリーズのファイナルステージ第10月17日行われましたべリーグ3連覇の広島は3位の巨人2631で解消しアドバンテージの一生と合わせて2さんにショートし
ましたパリーグは2のソフトバンクが優勝したセーブに一生いっぱいの大都市近郊美味しい公式 it ビジネスニュースこの放送は今週のもうひと踏ん張りを支えるライトグリーンのスポンサーでお届けしていますおはようございます美味しい公式パーソナリティ木曜日担当の青木美香です
この番組では月曜日から金曜日まで朝8時に家ビジネスに関するニュースをお届けしています木曜日イーロンマスクと SEC の和解裁判所が正式に承認株価が上昇テスラを非公開化することについての今夜悪名高い資金は確保したツイートに端
を発したテスラの CD をいろんなしくとアメリカ証券取引委員会 SEC との間で繰り広げられた一連のゴタゴタは正式に解決しました裁判所は詐欺疑いの生徒をめぐるマスクと SEC の若いを承認しましたブルームバーグニュース羽生からワークフロー自動化ツールアクションズ登場独自サ
ービス提供の際一旦最近 Microsoft 傘下に入ったニットオープンソースコード共有とかのためのサービスと考えられてきましたアメリカ時間10月16日どうしてはギットハブアクション頭を白紙のサービスを開発提供する路線の第一歩を踏み出
しました利用することでこのプラットフォームにコードを保存したり同僚と共有したりするだけでなく実行することが可能になります妊娠中出産後の悩みをスマホで昨日は10月18日産婦人科領域に特化した遠隔健康医療相談サービスをオンラインにすると火曜日水曜日金曜日の18時から22時
の間10分館の予約制で産婦人科医助産師に相談可能妊娠中の食事や服薬について教えて欲しい2ヶ月になるけれど気分の落ち込みが酷い喉妊娠中の悩みやお腹の赤ちゃんについての悩みまで幅広い相談に行っても対応します Google マップ
が電気自動車オーナー向けに充電ステーション情報を評価 Google Map は電気自動車オーナーが最寄りの最適な充電施設を見つけるための機能をアプリに追加し
ましたアメリカ時間10月16日 Google Map は充電ステーションに関する情報をユーザーに提供する機能をアプリに追加したと発表しました Google Map は数年前から充電ステーションを掲載していますしかし今回 Google は整形ネットワークを利用してさらに多くのステーションを
表示し利用可能な充電ポート数や充電速度などの情報提供します クラウドファンディングサイト運命の Lady 4発のエクイティ調達で棒線3億円の資金を獲得企業向けソーシャルインパクト事業を立ち上げクラウドファンディングサイト ready fo
r を運営するで D 4は17日およそ高専3億円も衝突したと発表しました今回の上達法に参加した弁護しのはら滋賀執行役員 logp の今の子が社外取締役にまたアドバイザーとして小泉氏にする党の孫泰蔵氏東京大学特任准教授の松尾豊東さらにレディーフォーのブランド強化を目的として電通エグゼ
クティブクリエイティブディレクタークリエイティブテクノロジストの菅野薫滋賀クリエイティブアドバイザーとして参画します ポケモン GO 2進法地方のモンスターが登場するアップデートで新機能を持すこのところ新しいポケモンが登場しないのでポケモン GO を親も多いかもしれませんそれなら再起動の準備です2001年のポケットモンスターダイヤモンドパールプラチナでおめみえきた地方のポケモンがポケ
モン GO に登場します3に100種類の新しいポケットモンを追
加すれば済む話ではありませんエコノロジーの観点からすると俺は簡単ではない事業団は何回かに分けられて徐々に行ってきます一番ありふれたモンスターは表にも登場しますもっとクールで珍しい種類は数週間かけてやってくださいのアップデートは第4世代のポケモンとなりますがそのうちど
のモンスターにはまず掃除をするのかそもそも移植されるのかはまだ明らかではありません モンスターを少しずつ登場させてプレイヤーの興味をなるべく長く引き継ぎ情報ところ見せて」
画像分析 CloudFunction
export const imageVisionFunc = functions.storage.bucket('//bucket名前').object().onFinalize(async event => {
const docRef = admin.firestore().collection('photos').doc(event.name);
const imageUri = `//bucketにあるのfilePath`;
const visionClient = new vision.ImageAnnotatorClient();
const results = await visionClient.labelDetection(imageUri);
const labels = results[0].labelAnnotations.map(obj => obj.description);
// ファイル名と 分析した結果をDBに書き込む
return docRef.set({labels, imageUri});
});
これを分析し、返した結果:(元々英語しかサポートしていないため、google translate apiを経由して、英語→日本語変換しています)
"床" "フローリング" "ウッドフローリング" "ラミネートフローリング" "ハードウッド"
"ウッド" "インテリアデザイン" "ロビー" "ロフト" "オフィス"
これは素晴らしい!オフィスや木などのデザインも認識でき、さすがGoogle様!
次回機械学習のカスタマイズもやってみます。