• Stars
    star
    114
  • Rank 306,656 (Top 7 %)
  • Language
    C#
  • Created over 6 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Google Home 買ったので、マッチョな男の人に喋らせました。(C#, Azure Functions)

Microsoft のサーバーレスのサービス Azure Functions (C#) を使って Google Home 対応アプリ「筋肉ボイス」

ちょまどさん (@chomado) のような筋肉を感じる声に変えてもらいましょう!

Google Assistant 系のアプリは Node.js でやってる人が多いのですが、これは C# で書いてます。(私は C# 好き過ぎて Microsoft 入社しました。)
(最初は node.js で書いていたのですが、途中で全部消して C# で書き直しました)

動作デモ動画

公開3日で 3.4万再生されました!

[https://twitter.com/chomado/status/974534165419892736]

↑ ぜひ音アリで見てください!

動作シナリオ

ユーザ「OKグーグル、筋肉ボイス」

「はい、筋肉ボイスに繋ぎます」

ユーザ「私の名前はちょまどです」

(イカツイ声で)「私の名前はちょまどです」

構成図(アーキテクチャ)

Microsoft のクラウドサービスである「Microsoft Azure (アジュール)」などを使ってるよ!

使っているもの:

  1. 自然言語解析エンジンDialogflow (一応挟んでるけど、今回は発した言葉のオウム返しなので、あんまり処理は書いてない。Webhook に飛ばす綱渡しのために入れてる)
  2. Microsoft Azureサーバーレス のサービスである Azure Functions (アジュール・ファンクション)。ここで自分の書いたプログラムが動くことになる
  3. 文字列を渡したらそれを任意の声で読み上げてくれる text to speechのサービス「VoiceText Web API
  4. Microsoft Azureファイル置き場Azure Storage (アジュール・ストレージ)

処理の流れ

  1. ユーザー「ちょまどだよ!」
  2. Google Assistant「"ちょまどだよ" って言ったわ」
  3. Dialogflow「Webhook に飛ばすわ」
  4. Azure Functions に書いた私のコード「"ちょまどだよ"って来たわ。音声変換APIに飛ばすわ」
  5. VoiceText Web API「mp3 に変換して返すわ」
  6. Azure Functions に書いた私のコード「mp3来たからクラウド上のストレージに保存しておいて、その保存先のURL貰うわ」
  7. Azure Storage「保存したよ。アクセスするためのURLはこれだよ https://-----」
  8. Azure Functions に書いた私のコード「Google Home (の上で動いてる Actions on Google)に mp3 渡して読み上げてもらうわ」
  9. Google Home「(野太い声で)ちょまどだよ」
  10. → ユーザ「きゃっきゃっ」

コード解説

メインのプログラムは /ChomadoVoice/GoogleHome.cs です。

動かすために自分でやること

「Google Home で動くアプリを C# で開発する」事前知識として、Microsoft 社エンジニアのかずきさんによる、こちらの記事がオススメです。

Google アシスタントアプリを開発する時に Fulfillment の先を C# で開発する方法

ーー

追記

私のこの README が不親切過ぎたようで、有志が続々と「筋肉ボイスを動かすための解説記事」を書いてくれています。ありがとうございます!!

「筋肉ボイス」を動かしてみる|Qiita !やすいさんありがとうございます!

追記その2:MS MVP の前村さんが記事を書いてくださいました!ありがとうございます!

ちょまどさんの筋肉ボイスを動かしてみた|つくるの大好きブログ

追記その3:しょうさんありがとうございます!これかなり詳細な記事で本当に素晴らしい

ちょまどさんの筋肉ボイス動かしてみた|SHO Tech Lab

ーー

やること

書いたコードは全て上げていますが、  

各種使用サービスの APIキーなど、秘密にするべきものはもちろん public に上げていません。

なので、clone 後、以下の手順を踏む必要があります。
(この手順書はまだ途中です!あとで完成させます)

  1. 声を変える ために使うサービスのAPIキー入手
    • VoiceText Web API の APIキー取得。(最初の画面の「はじめる」から先に進んだら、登録したメアドにAPIキーが届きます)
  2. (注) これから先、処理を動かす場所の確保 & mp3ファイル保存のために、クラウドサービスの Microsoft Azure(アジュール)を使います。まだアカウントをお持ちでない方は こちらからトライアル開始できます
  3. VoiceText Web API が吐いた mp3の保存場所 の接続文字列など入手
    • ラズパイとか用意したり自分でサーバ立てるのが面倒だったので、Microsoft のクラウドサービスを使います。ということで Microsoft Azure の管理ポータルを開きます。
    • 画面左上の「+リソースの作成」から、ストレージアカウント (mp3保存場所)のインスタンス立ち上げる
    • ストレージアカウント (mp3保存場所)の APIキー2つ取得(少し分かりにくいと思ったので下にスクショ載せました)
  4. 環境変数の書き換え
    • ストレージへのアクセスするための秘密の文字列(接続文字列)を、Azure Functions の環境変数一覧の中に登録する
    • この方法は後で書く!!と思ったんだけど、Microsoft MVP のまえもとさんが素晴らしい記事を書いてたので皆様もこれご参照ください。この記事の中の「Azure Functions の設定」節の「アプリケーション設定」の中に書いてあります

Azure ポータル上での操作

↓ Microsoft Azure で作った「ストレージアカウント」を開くと、最初はこんな画面である。
ちなみに、我々は、この「ストレージアカウント」の中の「Blob (Binary Large OBject) Storage」という機能だけ使うことになる。現段階では mp3 突っ込むだけなので。

↓ この左の「アクセスキー」をクリックして、以下2か所からコピーして メモ帳アプリかどこかに控えておく。

また、Google 側からアプリを呼び出すために、
これで Azure 側に作ったエンドポイントを Google の Dialogflow の Webhook のエンドポイントに入れておくのが大切です

More Repositories

1

xamarin-dev-doc

Xamarin Dev Days Japan で使う 日本語ドキュメントです。
90
star
2

Xamalist

Xamarin製アプリ一覧アプリ。iOS/Android アプリを、クライアントは Xamarin、サーバサイドは Azure を使って開発します
C#
43
star
3

chomado_bot

Twitter の @chomado_bot を作っていきます
PHP
38
star
4

TwitterBot_InCSharp

Twitter bot を C# で書きます。他の人も clone して (4行設定書き換えたら) 簡単に使えるように設計しています
C#
27
star
5

HowOldChomado

demo app for de:code 2017
C#
17
star
6

MS-MVP

Microsoft MVP 制度についてのまとめ
16
star
7

KatsuzetsuApp

滑舌チェックをしてくれる LINE Clova スキルです。
C#
15
star
8

SmartSpeakerGetLatestArticle

スマートスピーカーのスキルです。ブログの最新記事のタイトルをスマートスピーカーが読み上げてくれる + (Clova の場合) URL を LINE で送ってくれる
C#
14
star
9

SimpleList

簡単な Xamarin.Forms アプリハンズオン資料
C#
13
star
10

WindowsMR_GettingStarted

Windows Mixed Reality の始め方
9
star
11

HoloLensHandsOnTraining

ホロレンズのハンズオン資料
7
star
12

MeetingResponseServer

Graph API + スマートスピーカー。自分のスケジュールを Office から参照できる
C#
7
star
13

AOJ

AOJのコードを置いていこうと思います(Volume100以外)
C++
6
star
14

UWP-Paint-app-Hands-on-Lab-Workshop

C#
5
star
15

190420-CanCatEatBot

「これ猫食べれますかbot ( https://qiita.com/annie/items/7b63e366deeaeae63f94 )」の Clova 連携
C#
5
star
16

Unity2DGamePractice

C#
4
star
17

210219_FAQbot-on-Teams

HTML
3
star
18

HelloGatsby

CSS
3
star
19

220614-simple-website

HTML
3
star
20

GyumeshiTeamsBot

HTML
3
star
21

AzureFunctionsLab

C#
3
star
22

AtCoder

AtCoder (競技プログラミング) の問題を解いて Accepted したコードを記録として載せていこうと思います
C#
3
star
23

zenn-contents

2
star
24

Yoisho-Google-Home

Actions on Google 練習がてら、ひらすら私を褒めてくれるアプリを作ります
JavaScript
2
star
25

chomado.github.io_bk

ちょまどのJSテスト環境
JavaScript
2
star
26

ChomadoEchoBot

Microsoft による bot 開発フレームワークである BotFramework を使った、LINE bot 開発のサンプルです
HTML
2
star
27

Stroustrup_drill

『ストラウストラップのプログラミング入門』の練習問題をやっていこうと思います.
C++
2
star
28

190420-LineBot

「これ猫食べれますかbot ( https://qiita.com/annie/items/7b63e366deeaeae63f94 )」の Clova 連携
HTML
2
star
29

FAQBot

FAQ (よくある質問) bot
C#
1
star
30

exercises

practicing
Haskell
1
star
31

SmartHotel360-Mobile-master

C#
1
star
32

Roll-a-Ball-for-Windows-MR

Practice for Unity
C#
1
star
33

211125-FAQBot

HTML
1
star
34

decode18demo

C#
1
star
35

BotApplication1

C#
1
star
36

ConsoleApp1

Developer Summit 2017 でライブコーディングしたものです
C#
1
star
37

Self-training-LearnModuleTeamsAppsDev

self training for the Learn module exercise (created by Andrew Connell)
TypeScript
1
star
38

github-test

gitとgithubに慣れるためのリポジトリ
Ruby
1
star
39

HelpDeskBot

C#
1
star
40

FriesOrNot2

For Practice Swift & https://customvision.ai (MSのAIサービス)
Swift
1
star
41

test

CSS
1
star
42

WeatherBot

C#
1
star
43

Hiyoko-Tobashi-Unity2D

練習用のプロジェクトです
C#
1
star