PythonでWindowsの音声合成を使って、
IPメッセージ届いたらテキストの読み上げ
# PythonでWindowsの音声合成を使う
# pywin32ライブラリのインストールが必要
# インストール方法)pip install pywin32
#20220608 音声の指定を追加
## デフォルト利用可能な音声を取得します。
# Microsoft Ayumi - Japanese (Japan) 0 女性
# Microsoft Haruka - Japanese (Japan) 1 女性
# Microsoft Ichiro - Japanese (Japan) 2 男性
# Microsoft Sayaka - Japanese (Japan) 3 女性
import os
import random
import win32com.client as wincl
spt=["むかし、むかし、ある所に正直者ですが、運の悪い男が住んでいました。","悪い時が過ぎれば、よい時は必ず来る。","人事を尽くして天命を待つ","自分の居場所を自分でつくるんだ(スティーブ・ジョブズ)"]
voice = wincl.Dispatch("SAPI.SpVoice")
cat = wincl.Dispatch("SAPI.SpObjectTokenCategory")
cat.SetID(r"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices", False)
v = [t for t in cat.EnumerateTokens()]
voice.Voice=v[3]
print(voice.Speak(random.choice(spt)))
while True:
ol=3
v = [t for t in cat.EnumerateTokens()]
voice.Voice=v[ol]
print('lock')
os.system('ipcmd recv /msgfile=t.txt')
print('unlock')
f = open('t.txt','r',encoding='utf-8')
f.readline()
s=f.readline()
if 'BG_rma' in s:
u= "RMAコーナーからのメッセージです"
ol=0
elif 'BG_tonogai' in s:
u= "とのがいさんからのメッセージです"
ol=2
elif 'BG_gido' in s:
u= "儀同さんからのメッセージです"
ol=1
elif 'BG_sun' in s:
u= "そんさんからのメッセージです"
ol=2
elif 'BG_takazawa' in s:
u= "髙澤さんからのメッセージです"
ol=1
elif 'mvk_tsuchida' in s:
u= "土田さんからのメッセージです"
ol=2
elif 'aut_toyota' in s:
u= "豊田さんからのメッセージです"
ol=3
elif 'BG_fujiwara' in s:
u= "藤原さんからのメッセージです"
ol=2
else:
u= "匿名さんからのメッセージです"
ol=1
print(s)
print(u)
voice.Speak(u)
voice.Voice=v[ol]
u=''
while True:
l = list(f.readline())
if l[0] == '-' and l[1] == '-' and l[2] == '-':
break
while True:
v=f.readline()
if v:
l=list(v)
if l[0] !='>':
print(v)
voice.Speak(v)
else:
f.close()
break
print('Error Exit')
os.system('pause')
メッセージの例
=====================================
From: BG_takazawa (japan/A2/192.168.163.97/aa-<3878xxxx>)
at Thu Mar 17 13:28:46 2022 (RSA2/認証+)(封)
-------------------------------------
テスト