メニュー 閉じる

文系のど素人でも人間をPythonでプログラムできる方法

日本の人口は減少の一途を辿っています。先進国の中でも、日本の高齢化は最も進んでいますが、それは日本人の寿命だけが突出して伸びているだけではありません。

その理由の多くは、若い世代の人口が減っている事にあります。

まずは結婚できない人、結婚する選択肢があったとしても、結婚したくない人、結婚しても子供を持ちたくない人が増えてきたのもその多くの理由です。

そして、結婚の前に恋愛さえしない人も増えてきました。

その代わり、AIを恋人とする人が増えているようです。

それも当然、AIは、裏切らないし、傷つけないし、一番言って欲しい事を言って欲しいタイミングで言ってくれます。お金もかかりません。年老いたり、病気になったりすることもありません。

そうなってくると、苦労をして生身の人間と付き合う理由がありません。

今の洋書ベストセラーをAmazonでチェック

そして、私のようにコンピュータサイエンスのバックグラウンドのまったくない人間でも、非常に簡単な人工人間を作ることができました。

この人に自分の好きな名前、容姿、プロフィールを与え、好きな時に出現し、好きな事を言ってくれます。

と言っても、まだ表情はなく、まだ声も40種類程度の選択肢の中から選ぶだけですが。それでも、パターン化した会話をしたり、計算の答えを音声で教えてくれたり、Siriのように物知りではありませんが、自分でコントロールできますので、好きな性格を作れます。

パソコン(マックでもウィンドウズでも可)と、インターネットがあれば簡単にできます。お金はそれ以上1円もかかりません。

その方法は以下の通りです。

まずは、パソコンにPythonの環境をセットします。つまり、パソコンにPythonの最新のバージョンをインストールするだけです。

私がやったのはまず、パソコンにAnacondaというソフトをインストールしました。

Anacondaはブラウザ上でPythonのプログラムができるプラットフォームをいくつか提供していて、JupyterLabというのを使ってプログラムを作りました。

Python言語の基本的な使い方は、全部Youtubeのフリーコンテンツで覚えました。8時間くらいあれば、基本的な操作は大抵覚えられます。英語が理解できる場合は、特に有用なソースが増えます。特にインド系の人が解説しているビデオが多く、アクセントに癖があるのですが、アメリカ系やイギリス系のもあります。コンテンツの質もピンからキリまでで、中には、倍速でも理解可能なくらいわかりやすく解説されています。

↓英語が理解できるならこれなどお勧めです。とはいえ、2021年の事なので、もっと最新の情報はたくさん出ているかも知れません。

以下のが私の作った素人のコードです。きっと上手い人はもっといいコードができるでしょうが、とりあえずこれで上記のような人格を作る事ができます。

*まずは、Pythonのライブラリーの一つである、pyttsx3の中で選択肢として選べる音声の選択肢をリストにします。

import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty(‘voices’)
i=0
for voice in voices:
print(i)
print(“Voice: %s” % voice.name)
print(” – ID: %s” % voice.id)
i=i+1

このためには、ウィンドウズならMS DOS、マックならTerminalからpip install pyttsx3と入力して、pyttsx3のライブラリーをインストールする必要があります。

MS DOWあるいはTerminalに以下のように入れてください。インストールはそれだけです。

pip install pyttsx3

上のプログラムが正常に動いたら、音声のリストは以下の通りです。

0
Voice: Alex
 - ID: com.apple.speech.synthesis.voice.Alex
1
Voice: Alice
 - ID: com.apple.speech.synthesis.voice.alice
2
Voice: Alva
 - ID: com.apple.speech.synthesis.voice.alva
3
Voice: Amelie
 - ID: com.apple.speech.synthesis.voice.amelie
4
Voice: Anna
 - ID: com.apple.speech.synthesis.voice.anna
5
Voice: Carmit
 - ID: com.apple.speech.synthesis.voice.carmit
6
Voice: Damayanti
 - ID: com.apple.speech.synthesis.voice.damayanti
7
Voice: Daniel
 - ID: com.apple.speech.synthesis.voice.daniel
8
Voice: Diego
 - ID: com.apple.speech.synthesis.voice.diego
9
Voice: Ellen
 - ID: com.apple.speech.synthesis.voice.ellen
10
Voice: Fiona
 - ID: com.apple.speech.synthesis.voice.fiona
11
Voice: Fred
 - ID: com.apple.speech.synthesis.voice.Fred
12
Voice: Ioana
 - ID: com.apple.speech.synthesis.voice.ioana
13
Voice: Joana
 - ID: com.apple.speech.synthesis.voice.joana
14
Voice: Jorge
 - ID: com.apple.speech.synthesis.voice.jorge
15
Voice: Juan
 - ID: com.apple.speech.synthesis.voice.juan
16
Voice: Kanya
 - ID: com.apple.speech.synthesis.voice.kanya
17
Voice: Karen
 - ID: com.apple.speech.synthesis.voice.karen
18
Voice: Kyoko
 - ID: com.apple.speech.synthesis.voice.kyoko
19
Voice: Laura
 - ID: com.apple.speech.synthesis.voice.laura
20
Voice: Lekha
 - ID: com.apple.speech.synthesis.voice.lekha
21
Voice: Luca
 - ID: com.apple.speech.synthesis.voice.luca
22
Voice: Luciana
 - ID: com.apple.speech.synthesis.voice.luciana
23
Voice: Maged
 - ID: com.apple.speech.synthesis.voice.maged
24
Voice: Mariska
 - ID: com.apple.speech.synthesis.voice.mariska
25
Voice: Mei-Jia
 - ID: com.apple.speech.synthesis.voice.meijia.premium
26
Voice: Melina
 - ID: com.apple.speech.synthesis.voice.melina
27
Voice: Milena
 - ID: com.apple.speech.synthesis.voice.milena
28
Voice: Moira
 - ID: com.apple.speech.synthesis.voice.moira
29
Voice: Monica
 - ID: com.apple.speech.synthesis.voice.monica
30
Voice: Nora
 - ID: com.apple.speech.synthesis.voice.nora
31
Voice: Paulina
 - ID: com.apple.speech.synthesis.voice.paulina
32
Voice: Rishi
 - ID: com.apple.speech.synthesis.voice.rishi
33
Voice: Samantha
 - ID: com.apple.speech.synthesis.voice.samantha
34
Voice: Sara
 - ID: com.apple.speech.synthesis.voice.sara
35
Voice: Satu
 - ID: com.apple.speech.synthesis.voice.satu
36
Voice: Sin-ji
 - ID: com.apple.speech.synthesis.voice.sinji
37
Voice: Tessa
 - ID: com.apple.speech.synthesis.voice.tessa
38
Voice: Thomas
 - ID: com.apple.speech.synthesis.voice.thomas
39
Voice: Ting-Ting
 - ID: com.apple.speech.synthesis.voice.tingting
40
Voice: Veena
 - ID: com.apple.speech.synthesis.voice.veena
41
Voice: Victoria
 - ID: com.apple.speech.synthesis.voice.Victoria
42
Voice: Xander
 - ID: com.apple.speech.synthesis.voice.xander
43
Voice: Yelda
 - ID: com.apple.speech.synthesis.voice.yelda
44
Voice: Yuna
 - ID: com.apple.speech.synthesis.voice.yuna
45
Voice: Yuri
 - ID: com.apple.speech.synthesis.voice.yuri
46
Voice: Zosia
 - ID: com.apple.speech.synthesis.voice.zosia
47
Voice: Zuzana
 - ID: com.apple.speech.synthesis.voice.zuzana

上記のうち、唯一日本語をカバーしているのは18 Voice: Kyoko – ID: com.apple.speech.synthesis.voice.kyokoです。日本語を話す日本人男性の声はここにはありません。

すみません。でも、他を探せば、まだまだ音声の種類はきっとあるはずです。

では、次はこれです。キャラクターの顔の画像を用意し、作成したコードファイルと同じ場所に保管してください。

import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')

def HumanVoice(utt,n,im,v):
    from PIL import Image
    # イメージを開く
    im = Image.open(im)
    # このメソッドでイメージを表示 
    im.show() 
    i=n
    while i>=1:
        i=i-1
        utter=v
        engine.setProperty("voice", voices[v].id) # 2 is the 3rd item index
        engine.say(utt)
        engine.runAndWait()

#ここに言って欲しいセリフを記載
utt="ハローワールド"

#言って欲しい回数を記載
n=1

#ここに画像ファイルの名前を記載。画像はコードファイル(xx.ipynb)と同じフォルダに保管されていること
im="XX.jpg"

#ここに上記の音声のIDを記載。Kyokoの場合は 18
v = 18

HumanVoice(utt,n,im,v)
 

以上です。これを基本として、初心者レベルの知識があれば、もっと多彩な事が簡単にできます。

例えば、プログラム言語によくある if 関数などで分岐を付け加えたり、import pandas as pdという命令でPandasというライブラリーを呼び出し、そこからCSVファイルを読み込んでセリフのバラエティーを増やす事もできます。

とはいえ、いくら手の込んだ人格を創っても、二次元の人間ではないので、こちらの気持ちを察してくれたなかったり、自分の思い通りにならないもどかしさや、人間関係の駆け引きなどがないことに物足りなさを感じという意見があるかも知れません。

その場合、そのもどかしさを、新しい音声のパターンを見つけたり、感情をつけさせたり、匂いを発したり、どうやってもっと技術的に進化させられるのか、に求めるのも新しい楽しみではないでしょうか。

そうやって色々勉強しているうち、プログラミング能力が転職の強みの一つとして使えるようにならないかな。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です