🐶

「あつ森」のどうぶつ語に変換するコマンド「say_atsumori」を手軽に作成する方法

2022/12/05に公開

私事ですが、最近娘にニンテンドースイッチを買い与えた事もあり、娘が 「あつ森」 にはまっています。
「あつ森」は情操教育や社会性の勉強のために最適な教材と個人的には思っているのではまる事は良いことですが、ハマり過ぎて娘の日常会話が 「どうぶつ語」 (を真似した謎の言葉)になってしまい、娘との意思疎通が困難を極めています

ということで、対抗策として、日本語をどうぶつ語に変換するコマンド 「say_atsumori」 を作成することにしました。

かんたんな作り方

たぶんとても有名なサイトだと思いますが、 「どうぶつ語音声ジェネレーター」 というサイトがあります。ひらがなで自然文を入力すると、mp3形式で「どうぶつ語」の音声に変換してくれるサイトです。
https://animal-crossing.utakata.app/

こちらは、作者の太っ腹で、自由に使用して良いとのことなので、ありがたくつかわせていただきます。
https://www.utakata.work/entry/animal-crossing-voice-generator

上記サイトは、入力する文字列はひらがな前提になっているので、自然文をひらがなに変換するような処理についても検討する必要があります。
mecabkuromoji を使用して漢字の発音情報を取得するようなプログラムを書けば簡易的に実施できるのですが、それすらも面倒な私は、今回は Goo が提供している 「ひらがなAPI」 を使用しました。REST API に日本語を渡すと、渡した文字列をひらがなに変換してくれる、そんな API です。
https://labs.goo.ne.jp/api/jp/hiragana-translation/

API を利用するためには app_id が必要で、app_id の作成には GitHub アカウントが必要ですが、エンジニアの方であれば問題なくアカウントの発行が行えると思います。

発行された app_id を使って、 curl 等で以下のように叩くと、日本語がひらがなら変換されて返却されます。

$ curl -s -X POST -H "Content-Type: application/json" -d "{\"app_id\":\"${APP_ID}\", \"request_id\":\"say_atsumori\", \"sentence\":\"さだまさしは偉大な音楽家です\", \"output_type\":\"hiragana\"}"  https://labs.goo.ne.jp/api/hiragana

{"converted": "さだまさしは いだいな おんがくかです", "output_type": "hiragana", "request_id": "say_atsumori"}

「どうぶつ語音声ジェネレーター」と「ひらがなAPI」、2つを組み合わせると、極めて手軽に say_atsumori コマンドを作成することができます。

実例

以下の shell はだいぶ冗長な書き方をしていますが、実例として参考まで。
動作には jq, nkf あたりがインストールされている必要があります。

#!/bin/bash
APP_ID="..."
ORIGIN_TEXT="$1"

function urlencode {
  echo "$1" | nkf -WwMQ | sed 's/=$//g' | tr '=' '%' | tr -d '\n'
}

echo "origin: ${ORIGIN_TEXT}"
HIRAGANA_TEXT=$(curl -s -X POST -H "Content-Type: application/json" -d "{\"app_id\":\"${APP_ID}\", \"request_id\":\"say_atsumori\", \"sentence\":\"${ORIGIN_TEXT}\", \"output_type\":\"hiragana\"}"  https://labs.goo.ne.jp/api/hiragana | jq -r ".converted")
echo "hiragana: ${HIRAGANA_TEXT}"

ATSUMORI_URL="https://api-pokemon.utakata.app/animal_crossing_voice?text=$(urlencode "${HIRAGANA_TEXT}")&speed=10&type=high"
DOWNLOAD_FILE="${ORIGIN_TEXT}.mp3"
curl -s -X GET "${ATSUMORI_URL}" > "${DOWNLOAD_FILE}"
echo "download: ${DOWNLOAD_FILE}"

$ say_atsumori 今日はさだまさしのコンサートがあるので早退します
origin: 今日はさだまさしのコンサートがあるので早退します
hiragana: きょうは さだまさしの こんさーとが あるので そうたいします
download: 今日はさだまさしのコンサートがあるので早退します.mp3

https://drive.google.com/file/d/1ph7KJpj2w3pKVOcefRN51pdD8YK2kFEo/view?usp=sharing

応用例

娘と「どうぶつ語」でのコミュニケーションをする際に重宝しています。こんなこともできるんだ、と若干お父さんに対する尊敬の目も生まれたような気がします。

また仕事のコミュニケーションの場でも、直接は伝えづらいような内容を上司に伝えないといけない時などに、say_atsumori で作成した音声ファイルを Slack に貼り付けることで察してもらう、という使い方もできるかもしれません。
https://drive.google.com/file/d/1nCLj3mxVHS4e-GKU0howQPjdEFHmPURd/view?usp=sharing

Discussion