背景
化学の周期表の語呂合わせなどを暗記しようと思うと、人前で喋るのは憚れるタイプの語呂合わせが多いこともある。そんなときや、何か喋る内容を音声に保存したい場合など、python で簡単にパソコンに喋らせる方法を紹介する。
やり方はたくさんあって、ここでは、mac の say というコマンドラインのツールを使って、読み込ませたテキストファイルを音声化するだけです。
声出しスクリプトの御本尊
import sys, os
args = sys.argv
if len(args) == 2:
pass
else:
print("need to specify a file")
sys.exit()
f = open(args[1])
all = []
for i, one in enumerate(f):
one = one.strip().split()
mytext = " ".join(one)
os.system("say " + mytext)
all.append(mytext)
だけで、ファイルを入力して、適当にスペースを入れることで、少し間を生成するようにして、
say に与えるだけです。
応用例
例1) 元素周期表の声出し方法
周期表は語呂合わせで!覚え方を化学専攻歴6年の理系大学院生が語るよ。 や、周期表の覚え方5(ランタノイド、アクチノイド) を頂戴して、
水平リーベ僕の船 「なーに」間がある シップスクラークか
ヘイ!リッチな彼女とルビーせしめてフランスへ!
ベットに潜って 彼女とすればランランラン!
ふっくらブラジャー愛の跡てん
変なネーチャンある暗闇でキス連発でオガネソン
スコッチ・曝露マン 徹子にどう? 亜鉛がゲッ!明日はセレンのブラジャークリプトン?
スカイラーーーアク!
ちずるはハーフでラフ!
バナナを食べたデブ
クロム!もうすぐ!!
11個の銅・銀・金メダルをレンドゲン
オッス!船長!鉄砲リバー
待ってくれ!ボーリング
テルオ氏はハスキー!
コーラ!いれるの、待って!
ニッパラはペットです。
亜鉛、カドミ、ハゲ!コケる
ボーアがインテリ日本好き
炭サイぼう(単細胞)なゲーテはすんなり触れるな
にっぽんの朝は酢豚にビールとモスコビーム
ランドセルはプラスチック粘土 午後のサマーはヨーロッパのゴッドが波照間に自炊するためホエール釣りに行ってるってよ
あく汁取りのプロが裏で眠るプールでアメリカ産キュウリはバクっと刈り取るアインシュタインはFM聴いて麺がのびてるだろう
というテキストファイルを作成し、その意味は、
- ヘ(H)イ!リッチ(Li)な(Na)彼(K)女とルビー(Rb)せし(Cs)めてフラ(Fr)ンスへ!
- ベッ(Be)トに潜っ(Mg)て 彼(Ca)女とすれ(Sr)ば(Ba)ラン(Ra)ランラン!
- ふっ(F)くら(Cl)ブラ(Br)ジャー愛(I)の跡(At)点(Ts)
- 変(He)なネー(Ne)チャンある(Ar)暗(Kr)闇でキス(Xe)連(Rn)発でオガネソン(Og)
- スコ(Sc)ッチ(Ti)・曝(V)露(Cr)マン(Mn) 徹(Fe)子(Co)に(Ni)どう(Cu)? 亜鉛(Zn)が(Ga)ゲッ(Ge)!明日(As)はセレン(Se)のブラ(Br)ジャークリプトン(Kr)?
- スカ(Sc)イ(Y)ラー(La)ーーアク(Ac)!
- ち(Ti)ずる(Zr)はハーフ(Hf)でラフ(Rf)!
- バナ(V)ナを(Nb)食(Ta)べたデブ(Db)
- クロム(Cr)!も(Mo)う(W)すぐ(Sg)!!
- 11個の銅(Cu)・銀(Ag)・金(Au)メダルをレンドゲン(Rg)
- オ(O)ッス(S)!船(Se)長!鉄(Te)砲(Po)リバー(Lv)
- 待(Mn)ってく(Tc)れ(Re)!ボー(Bh)リング
- テ(Fe)ル(Ru)オ氏(Os)はハス(Hs)キー!
- コ(Co)ーラ(Rh)!いれ(Ir)るの、待って(Mt)!
- ニッ(Ni)パラ(Pd)はペット(Pt)です(Ds)。
- 亜鉛(Zn)、カドミ(Cd)、ハゲ(Hg)!コケる(Cn)
- ボ(B)ーア(Al)が(Ga)イン(In)テリ(Tl)日本好き(Nh)
- 炭(C)サイ(Si)ぼう(単細胞)なゲー(Ge)テはすん(Sn)なり(Pb)触れるな(Fl)
- に(N)っぽ(P)んの朝(As)は酢豚(Sb)にビ(Bi)ールとモスコビーム(Mc)
- ラ(La)ンドセ(Ce)ルはプラ(Pr)スチック粘(Nd)土 午後(Pm)のサマ(Sm)ーはヨーロッパ(Eu)のゴッド(Gd)が波照([はてる]Tb)間に自炊(Dy)するためホ(Ho)エール(Er)釣り(Tm)に行って(Yb)る(Lu)ってよ
- あく汁(Ac)取り(Th)のプロ(Pa)が裏(U)で眠る(Np)プール(Pu)でアメリカ(Am)産キュウリ(Cm)はバクっ(Bk)と刈り(Cf)取るアインシュタイン(Es)はFM(Fm)聴いて麺(Md)がのび(No)てるだろ(Lr)う
という非常の高尚なものであり、
%python speak.py goro.txt
と実行すると、音声が出る。
例2) 放射性核種
語呂合わせ②(放射性核種) を例に拝借させて頂くと、
別荘ふうなあるプレイスすごく真面目なこひに溺れ一途に浪人愛せよ乙女美人
べったりよせて 黒こげマンがするばっせ カードイン
するするカスピにいってくる あれ ごご ルビー ハイシー
という奇妙な文字列であるが、、
- 単核種元素(安定同位体が1つのみの元素)
- $^{9}Be ^{19}F ^{23}Na ^{27}Al ^{31}P ^{45}Sc ^{55}Mn ^{59}Co ^{75}As ^{93}Nb ^{89}Y ^{103}Rh ^{127}I ^{133}Cs ^{197}Au ^{209}Bi $
- 「別(Be)荘風(F)な(Na)ある(Al)Place(P)で、すごく(Sc)真面目(Mn)にこ(Co)ひ(As)におぼ(Nb)れ、一途(Y)に浪人(Rh)、愛(I)せよ(Cs)!を(Au)とめ美人(Bi)!」
- EC(軌道電子捕獲)壊変をする核種(EC100%)
- $^7Be ^{201}Tl ^{123}I(^{125}I) ^{75}Se ^{55}Fe ^{51}Cr ^{57}Co ^{68}Ge ^{54}Mn ^{67}Ga ^{85}Sr ^{133}Ba ^{139}Ce ^{109}Cd ^{111}In $
- 「べ(Be)ったり(Tl)よ(I)せ(Se)て(Fe) 黒(Cr)こ(Co)げ(Ge)マン(Mn)が(Ga)する(Sr)ば(Ba)っせ(Ce) カード(Cd)イン(In) 」
- EC(p+ + e- --> n + ν) なので、陽子過剰核で起こる
- 純β壊変物質(β線のみ放出しγ線は放出しない)
- $^{89}Sr ^{90}Sr ^{45}Ca ^{35}S ^{32}P(^{33}P) ^{63}Ni ^{90}Y ^{99}Tc ^{106}Ru ^{42}Ar ^{147}Pm ^{87}Rb ^{3}H ^{14}C $
- する(Sr)する(Sr)カ(Ca)ス(S)ピ(P)に(Ni)いっ(Y)てく(Tc)る(Ru) あれ(Ar) ごご(Pm) ルビー(Rb) ハ(H)イシー(C)
という高尚な意味がある。
%python speak.py goro2.txt
で音声を確認する。
語呂合わせ①(周期律表の覚え方) も試しに拝借させて頂くと、
水兵リーベ僕の船 ソーダ曲があるシップスクラー クか
スコッチ暴露マンてこにドアがゲアッセブルク
ルビーすられて矢じりの部品もってくる ロープであがくど 因数しぼって行くぜ
せしめた薔薇は 高く売れ と教えられ 白い英雄 過ぎたる訛りバイポーラン
フランスあこちゃん 裸婦でドブに死亡 エッチすまいと 出すロジャー
ランちゃんせっかちプルンとヌード 午後のSM 夕方 テレビで大放送 エロくて たまらず いたぶるん
アコちゃんのパイは 上向きニップル ぷるん甘えて噛んでばっかりね エスじゃ不満でノれないわ
となる。スペースを入れると、そこで一息つく。
例3) 魔法数
-
魔法数の覚え方
-- ふた ば ぶろ には いずれ (のへ) やに (も い) いふろ いやし
-- 2 8 20 28 50 82 126 184
例4) 「半減期」ゴロ付き
放射線科専門医試験対策「半減期」ゴロ付き が素晴らしい完成度なので拝借。一部改変。
- PET製剤
- 行こお、に($^{15}O$(2min))、いさんと($^{13}N$(10min))、いいしにを($^{11}C$(20min))、いはふひと($^{18}F$(110min)) # 時定数の短い順
- 安定同位体は、$^{16}O,^{14}N,^{12}C,^{19}F$、であり、C, N, O は陽子と中性子の数が同数で安定で、Fだけ中性子が一つ多いことに注意。
- PET製剤は中性子が欠乏しているがゆえに、「陽子 --> $^{+}e$ + 中性子 + 電子ニュートリノ」のβ+崩壊を起こし、中性子欠乏な励起状態から基底状態に遷移する。
- 15O(陽子8個、中性子7個)であれば、15N(陽子7個、中性子8個)の基底状態に落ちる。
- ジェネレータ (IT、ガンマ線)
- 肺も膨らむ13秒($^{81m}Kr$(13sec))、救急的に6時間はガマン($^{99m}Tc$(6h))
- β-崩壊
- 一切酔う蜂($^{131}I$(8day))、野球するイチロー($^{89}Sr$(51day))、くれわいの虫($^{90}Y$(64h))
- ガンマ線
- 行くは金2日($^{198}Au$(2.5day))、避妊後よ60日はガマン($^{125}I$(60day))、いい国いるナミ($^{192}Ir$(73day))
- α崩壊
- 夫婦、未来いい($^{223}Ra$(11day))ある(α)
- ほか
- ガンマ線源
- 無礼な子はごねる ($^{60}Co$(5年))
- いっさいなくす30年 ($^{137}Cs$(30年))
- ガンマ線源
例5) 全元素
1 H 水素
2 He ヘリウム
3 Li リチウム
4 Be ベリリウム
5 B ホウ素
6 C 炭素
7 N 窒素
8 O 酸素
9 F フッ素
10 Ne ネオン
11 Na ナトリウム
12 Mg マグネシウム
13 Al アルミニウム
14 Si ケイ素
15 P リン
16 S 硫黄
17 Cl 塩素
18 Ar アルゴン
19 K カリウム
20 Ca カルシウム
21 Sc スカンジウム
22 Ti チタン
23 V バナジウム
24 Cr クロム
25 Mn マンガン
26 Fe 鉄
27 Co コバルト
28 Ni ニッケル
29 Cu 銅
30 Zn 亜鉛
31 Ga ガリウム
32 Ge ゲルマニウム
33 As ヒ素
34 Se セレン
35 Br 臭素
36 Kr クリプトン
37 Rb ルビジウム
38 Sr ストロンチウム
39 Y イットリウム
40 Zr ジルコニウム
41 Nb ニオブ
42 Mo モリブデン
43 Tc テクネチウム
44 Ru ルテニウム
45 Rh ロジウム
46 Pd パラジウム
47 Ag 銀
48 Cd カドミウム
49 In インジウム
50 Sn スズ
51 Sb アンチモン
52 Te テルル
53 I ヨウ素
54 Xe キセノン
55 Cs セシウム
56 Ba バリウム
57 La ランタン
58 Ce セリウム
59 Pr プラセオジム
60 Nd ネオジム
61 Pm プロメチウム
62 Sm サマリウム
63 Eu ユウロピウム
64 Gd ガドリニウム
65 Tb テルビウム
66 Dy ジスプロシウム
67 Ho ホルミウム
68 Er エルビウム
69 Tm ツリウム
70 Yb イッテルビウム
71 Lu ルテチウム
72 Hf ハフニウム
73 Ta タンタル
74 W タングステン
75 Re レニウム
76 Os オスミウム
77 Ir イリジウム
78 Pt 白金
79 Au 金
80 Hg 水銀
81 Tl タリウム
82 Pb 鉛
83 Bi ビスマス
84 Po ポロニウム
85 At アスタチン
86 Rn ラドン
87 Fr フランシウム
88 Ra ラジウム
89 Ac アクチニウム
90 Th トリウム
91 Pa プロトアクチニウム
92 U ウラン
93 Np ネプツニウム
94 Pu プルトニウム
95 Am アメリシウム
96 Cm キュリウム
97 Bk バークリウム
98 Cf カリホルニウム
99 Es アインスタイニウム
100 Fm フェルミウム
101 Md メンデレビウム
102 No ノーベリウム
103 Lr ローレンシウム
104 Rf ラザホージウム
105 Db ドブニウム
106 Sg シーボーギウム
107 Bh ボーリウム
108 Hs ハッシウム
109 Mt マイトネリウム
110 Ds ダームスタチウム
111 Rg レントゲニウム
112 Cn コペルニシウム
113 Nh ニホニウム
114 Fl フレロビウム
115 Mc モスコビウム
116 Lv リバモリウム
117 Ts テネシン
118 Og オガネソン
このファイルを用いて
%python speak.py genso.txt
で確認する。ところどころ、おかしい。「金」は「かね」と読まれる。OSに依存するのかなぁ。
音声ファイルを保存したい場合
Macのsayコマンドの使い方などを参照すると、say の引数 -o で音声ファイルにも保存できる。