4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

日向坂46齊藤京子のバビ語をノーコードかつサーバレスで google home に喋らせてみた

Last updated at Posted at 2020-03-16

#はじめに
こんにちは,ぱそきいろ: @takacpu55と申します.
最近巷でノーコードが流行っているみたいです.
私も流行りに乗ってノーコードのVoiceflowというサービスを使ってgoogle home で開発したので久しぶりに投稿しようと思います.
ブログもやってますので,興味がある方は除いてもらえたらと思います.
「いいね」,ではなく「LGTM」を頂けましたら幸いです.

#作ったもの
バビ語メーカーというアプリを作りました.
google home に日本語を喋りかけると,バビ語に変換して読み上げてくれます.

(正確には[入れ詞](https://ja.wikipedia.org/wiki/%E5%85%A5%E3%82%8C%E8%A9%9E)というみたいです) 言葉の間に母音が同じ「ばびぶべぼ」を挿入します.  例:「こんにちは」→「こぼんばにびちびはば」    「今日はいい天気ですね」→「きびうぶはばいびいびてべんばきびでべすぶねべ」 最近,人気の日向坂46の齊藤京子さんが特技として披露しています. ![saitoubabigo2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148852/9f20f40c-d1b5-eb73-a9f3-435ed2b0223c.jpeg)

これをノーコード,かつサーバレスで実装しました.
システムの概要図は以下になります.
アウトライン.png
Voiceflow で google home の実装を,AWS lambda でバックエンドの実装をしました.
ひらがなに変換する際に,ひらがな化APIを使用させて頂いております.
以下で詳しく説明していきます.

#Voiceflowでの実装
google home でのアプリ開発をノンコーディングでできる,Voiceflowというサービスを使って実装しています.
ブロックを繋げることで,処理の流れを記述できます.
(本アプリを作る際にこちらの資料を参考にさせていただきました.)
今回作ったアプリは以下のようにブロックを配置しております.
outline.png
google home で受け取った日本語を http リクエストで投げてバビ語に変換,発話という流れを繰り返すようになっています.
「終了」と話すと,アプリが終了します.
次に,バビ語に変換する処理について説明します.

#AWS Lambdaでの実装
ここでは,httpリクエストで日本語を受け付け.バビ語に変換して返すapiを実装します.
AWS lambda で実装しています.

# coding: utf-8

import json
import requests
import re

def lambda_handler(event, context):
    # 変換したい文字列を取得
    text=event["key"]

    # ひらがなに変換
    text=toHira(text)
    # バビ語に変換
    text=tobabi(text)

    # バビ語を返す
    return {
        'statusCode': 200,
        'body': text
    }

def toHira(text):
    # ひらがな化APIにhttpリクエストを投げる
    headers = {
    'Content-Type': 'application/json',
    }
    data = '{"app_id":"ひらがな化APIのアプリID","request_id":"record003","sentence":"'+text+'","output_type":"hiragana"}'

    response = requests.post('ひらがな化APIのURL', headers=headers, data=data.encode("utf-8"))
    response=response.json()
    return response["converted"]
    
def tobabi(text):
    '''
    バビ語に変換します.
    母音の取得方法が分からなかったため,正規表現で全パターン書いてマッチさせています.
    '''
    rettext=""
    for i in range(len(text)):
        if re.search(text[i],"あかさたなはまやらわんがざだばぱ"):
            rettext+=text[i]+""
        if re.search(text[i],"いきしちにひみりぎじぢびぴ"):
            rettext+=text[i]+""
        if re.search(text[i],"うくすつぬふむゆるぐずづぶぷ"):
            rettext+=text[i]+""
        if re.search(text[i],"えけせてねへめれげぜでべぺ"):
            rettext+=text[i]+""
        if re.search(text[i],"おこそとのほもよろをごぞどぼぽ"):
            rettext+=text[i]+""
        print(rettext)
    return rettext

これが今回唯一書いたコードになってます.
特に工夫するほどの内容ではないのですが,強いて言えば,記述量を減らすために,母音の判定を正規表現で書いたくらいですかね.

#まとめ
ほとんどコードを書かずにバビ語変換アプリを実装できました.
Voiceflowはノーコードで実装できましたが,じゃあ全くプログラミングが必要ない世の中になるのかと言われるとノーで,やっぱりプログラミングの知識や経験がないと実装は難しいのではないかと思いました.

ちなみに.これだけバビ語を実装してきましたが,実は日向坂46では松田このか推しです←
まつだこの.jpg

ありがとうございました.

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?