日本の人口は減少の一途を辿っています。先進国の中でも、日本の高齢化は最も進んでいますが、それは日本人の寿命だけが突出して伸びているだけではありません。
その理由の多くは、若い世代の人口が減っている事にあります。
まずは結婚できない人、結婚する選択肢があったとしても、結婚したくない人、結婚しても子供を持ちたくない人が増えてきたのもその多くの理由です。
そして、結婚の前に恋愛さえしない人も増えてきました。
その代わり、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ファイルを読み込んでセリフのバラエティーを増やす事もできます。
とはいえ、いくら手の込んだ人格を創っても、二次元の人間ではないので、こちらの気持ちを察してくれたなかったり、自分の思い通りにならないもどかしさや、人間関係の駆け引きなどがないことに物足りなさを感じという意見があるかも知れません。
その場合、そのもどかしさを、新しい音声のパターンを見つけたり、感情をつけさせたり、匂いを発したり、どうやってもっと技術的に進化させられるのか、に求めるのも新しい楽しみではないでしょうか。
そうやって色々勉強しているうち、プログラミング能力が転職の強みの一つとして使えるようにならないかな。