Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

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

はじめに

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

作ったもの

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


(正確には入れ詞というみたいです)
言葉の間に母音が同じ「ばびぶべぼ」を挿入します.
 例:「こんにちは」→「こぼんばにびちびはば」
   「今日はいい天気ですね」→「きびうぶはばいびいびてべんばきびでべすぶねべ」
最近,人気の日向坂46の齊藤京子さんが特技として披露しています.
saitoubabigo2.jpg

これをノーコード,かつサーバレスで実装しました.
システムの概要図は以下になります.
アウトライン.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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
6
Help us understand the problem. What are the problem?