1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語は母音だけでも意外と伝わる?母音法をPythonで試してみた

Last updated at Posted at 2025-12-30

はじめに

ミュージカルや舞台を観ていると、「どうしてこんなに綺麗な発声ができるんだろう?」と気になることがあります。声量や滑舌ももちろん大切ですが、それ以上に、音そのものが整っている感じがします。

少し調べてみると、歌や発声のトレーニングでは 母音法 と呼ばれる考え方がよく使われていることを知りました。子音を一度忘れて、母音だけで発声を整えるという方法です。たしかに、演者の声は透き通っていて、母音がはっきりと聞こえてきます。

そこで今回は、手軽に練習できるように、この母音法を日本語向けに少し噛み砕き、Pythonで簡単に試せる形にしてみます。

母音法とは

たとえば次の言葉を母音だけにすると、次のようになります。

  • ありがとう → あいあおう
  • すみません → ういあえん
  • おつかれさま → おうあえああ
  • しゃかいじん → ああいいん

意味はかなり削れていますが、抑揚をつけてこの母音だけを読むと、「何を言いたいか」はなんとなく分かると思います。感謝なのか、挨拶なのか、疲れているのか、といった 言葉の種類 は意外と残ります。このように、母音だけを取り出して発声することで、音の流れや抑揚に意識を向ける練習法が母音法です。

Pythonで実装する

以下が今回使うコードです。ひらがな・カタカナに対応し、拗音も段として処理します。

  • 各仮名は「段(あ・い・う・え・お)」に変換

    • わ → あ段
    • み → い段
    • ず → う段
  • 「ん/ン」はそのまま残す

  • 拗音(しゃ・ちゃ・じゃ など)は小文字が段を決める

    • ゃ → あ
    • ゅ → う
    • ょ → お
  • ひらがな・カタカナ対応

  • 漢字・記号はそのまま残す(意味のアンカーとして)

実装コードは、Google Colab の こちら からも実行できます。

# ひらがな → 母音(段)
VOWEL_MAP = {
    "": "", "": "", "": "", "": "", "": "",

    "": "", "": "", "": "", "": "", "": "",
    "": "", "": "", "": "", "": "",
    "": "", "": "", "": "", "": "", "": "",

    "": "", "": "", "": "", "": "", "": "",
    "": "", "": "",
    "": "", "": "", "": "", "": "", "": "",

    "": "", "": "", "": "", "": "", "": "",
    "": "", "": "", "": "",
    "": "", "": "", "": "", "": "", "": "",

    "": "", "": "", "": "", "": "", "": "",
    "": "", "": "",
    "": "", "": "", "": "", "": "", "": "",

    "": "", "": "", "": "", "": "", "": "",
    "": "", "": "", "": "", "": "",
    "": "", "": "", "": "", "": "", "": "",

    "": "",
}

# 拗音(小文字)→ 母音(段)
YOON_VOWEL = {
    "": "", "": "", "": "",
    "": "", "": "", "": "",
}

# 小文字(拗音以外)
SMALL_CHARS = set("ぁぃぅぇぉァィゥェォっッ")

def hira_to_kata(ch):
    return chr(ord(ch) + 0x60)

def kata_to_hira(ch):
    return chr(ord(ch) - 0x60)

def extract_vowels(text):
    result = []
    i = 0

    while i < len(text):
        ch = text[i]

        # 拗音
        if i + 1 < len(text) and text[i + 1] in YOON_VOWEL:
            result.append(YOON_VOWEL[text[i + 1]])
            i += 2
            continue

        # 小文字は素通り
        if ch in SMALL_CHARS:
            result.append(ch)
            i += 1
            continue

        # カタカナ判定
        is_katakana = 0x30A1 <= ord(ch) <= 0x30F6
        hira = kata_to_hira(ch) if is_katakana else ch

        if hira in VOWEL_MAP:
            v = VOWEL_MAP[hira]
            if is_katakana:
                v = hira_to_kata(v)
            result.append(v)
        else:
            # 漢字・記号など
            result.append(ch)

        i += 1

    return "".join(result)

extract_vowels() に文字列を入れると母音に変換して出力してくれます。

実際に変換してみる

たとえば、以下のような会話文をそのまま入力して、母音列に変換してみます。

入力
## 実際に変換してみる(サンプル)
examples = [
    ("Aさん", "おつかれさまです"),
    ("Bさん", "おつかれさま"),

    ("Aさん", "あっ、みゃくみゃくみにいった?"),
    ("Bさん", "まだいけてないんだよね、いっかいくらいはいってみたいけど……"),
    ("Aさん", "あっ、もうおわっちゃったよ"),
    ("Bさん", "えっ、そうなんですか!?いきたかったな"),

    ("Aさん", "じゃあ、ポンデリングでもたべにいく?"),
    ("Bさん", "ん?なんて?"),
    ("Aさん", "ん?ポンデリングだよ"),
    ("Bさん", "それはしってるわ!なんできゅうに?"),
    ("Aさん", "にてるから。かわりになるかなって"),
    ("Bさん", "あっ、そういうことね。まあ、いいけど"),

    ("Aさん", "ありがとう。みっつまでおごるよ"),
    ("Bさん", "わたし、そんなにたべれないんだけど……ふとらせたいの?"),
    ("Aさん", "あっちがうよ、そういうイミじゃないって"),
    ("Bさん", "いや、いいわけはいいから"),

    ("Aさん", "ごめんなさい"),
    ("Bさん", "……まあ、いいけど"),
    ("Aさん", "(あぶない、あぶない……母音で話してたら終わってた)")
]

for speaker, line in examples:
    print(f"{speaker}:")
    print(f"    {line}")
    print(f"{extract_vowels(line)}")
    print()
出力
Aさん:
    おつかれさまです
  → おうあえああえう

Bさん:
    おつかれさま
  → おうあえああ

Aさん:
    あっ、みゃくみゃくみにいった?
  → あっ、あうあういいいっあ?

Bさん:
    まだいけてないんだよね、いっかいくらいはいってみたいけど……
  → ああいええあいんあおえ、いっあいうあいあいっえいあいえお……

Aさん:
    あっ、もうおわっちゃったよ
  → あっ、おうおあっあっあお

Bさん:
    えっ、そうなんですか!?いきたかったな
  → えっ、おうあんえうあ!?いいああっああ

Aさん:
    じゃあ、ポンデリングでもたべにいく?
  → ああ、オンエインウえおあえいいう?

Bさん:
    ん?なんて?
  → ん?あんえ?

Aさん:
    ん?ポンデリングだよ
  → ん?オンエインウあお

Bさん:
    それはしってるわ!なんできゅうに?
  → おえあいっえうあ!あんえううい?

Aさん:
    にてるから。かわりになるかなって
  → いえうああ。ああいいあうああっえ

Bさん:
    あっ、そういうことね。まあ、いいけど
  → あっ、おういうおおえ。ああ、いいえお

Aさん:
    ありがとう。みっつまでおごるよ
  → あいあおう。いっうあえおおうお

Bさん:
    わたし、そんなにたべれないんだけど……ふとらせたいの?
  → ああい、おんあいあええあいんあえお……うおあえあいお?

Aさん:
    あっちがうよ、そういうイミじゃないって
  → あっいあうお、おういうイイああいっえ

Bさん:
    いや、いいわけはいいから
  → いあ、いいあえあいいああ

Aさん:
    ごめんなさい
  → おえんああい

Bさん:
    ……まあ、いいけど
  → ……ああ、いいえお

Aさん:
    (あぶない、あぶない……母音で話してたら終わってた)
  → (あうあい、あうあい……母音え話いえああ終あっえあ)

意味はかなり曖昧になっていますが、母音だけでも抑揚をつけて読むと、雰囲気や話の流れは意外と伝わります。このように、会話のやり取りやプレゼンのセリフを入力すれば、発声練習用の素材として使うことができます。

母音だけで読むと見えてくるもの

母音列にして声に出してみると、意味より先に次のようなものが立ち上がってきます。

  • 丁寧か、口語か
  • 軽いか、重いか
  • 疲れているか、元気か

日本語では、「何を言っているか」以上に、「どんな調子で言っているか」を母音が担っているのかもしれません。

発声トレーニングとして使うなら

使い方はとても単純です。

  1. 普通の文章を母音に変換する
  2. 母音だけで、なめらかに読む
  3. その後、元の文章に戻す

子音に引っ張られず、母音を安定させた発声を意識しやすくなると思います。

おわりに

今回は、母音法を練習するために、日本語の文章を母音列に変換する簡単なスクリプトを Python で実装してみました。日本語の場合、「何を言っているか」よりも先に、「どんな調子で話しているか」が母音に現れているのかもしれません。発声トレーニングとしても、言語の構造を観察する遊びとしても、何かの参考になれば幸いです。

母音だけの日本語、思ったより奥が深いです。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?