前回の記事では、Webスクレイピング処理に加えて、WordCloud生成を組み合わせて、
対象のWebページから、単語(キーワード)を可視化する処理を紹介しました。
今回は、Pythonでテキストファイルの内容を読み込んだ後、音声ファイルに変換して、
読み上げ処理を行う記事を紹介しようと思います。
ライブラリのインストール
音声ファイルに変換して、読み上げる処理を実現する為に、専用のライブラリを
インストールしてみましょう。
今回使用するライブラリは、下記の2つになります。
- gTTS (Google Translate’s Text-to-Speech):Google翻訳の読み上げライブラリ
- pygame:ゲームを開発する為のライブラリで、mixer.musicモジュールを利用して、ストリーミング再生を実現します
インストール済みのライブラリの確認
インストール済みのライブラリを、下記のコマンドで確認してみましょう。
python -m pip list
まだ、gTTSライブラリ や pygameライブラリ がインストールされていない事が
確認出来ました。
gTTSライブラリのインストール
先ずは、gTTSライブラリをインストールします。
コマンドプロンプト または PowerShell を起動します。
下記のコマンドで、gTTSライブラリをインストールしてみます。
python -m pip install gTTS
pygameライブラリのインストール
次に、pygameライブラリをインストールします。
下記のコマンドで、pygameライブラリをインストールしてみます。
python -m pip install pygame
2つのライブラリ共に、インストール時にエラーが表示されませんでしたので、問題無く
インストールされていると思いますが、念の為、インストール済みのライブラリを確認します。
python -m pip list
- gTTS:Version 2.5.4
- pygame:Version 2.6.1
上記のライブラリがインストールされている事が、確認出来ました。
音声ファイル変換+読み上げ処理
音声ファイルに変換して、読み上げ処理を実現するのに必要なライブラリがインストール
されましたので、実際に音声ファイル変換+読み上げ処理を実装して行きます。
読み込み元ファイル:百人一首
読み込み元となる、テキストファイルを準備します。
今回も、「百人一首」のデータを利用してみます。
下記の記事では、「百人一首」の CSVファイル や JSONファイル の読み込み処理を
紹介していますので、参考にして下さい。
今回は単純に、「百人一首」のテキストファイルから読み込みます。
準備されていない方は、下記の「百人一首」一覧をコピーして、テキストファイルで
保存して下さい。
1:秋の田の かりほの庵の 苫をあらみ わが衣手は 露にぬれつつ / 天智天皇 2:春すぎて 夏来にけらし 白妙の 衣ほすてふ 天の香具山 / 持統天皇 3:あしびきの 山鳥の尾の しだり尾の ながながし夜を ひとりかも寝む / 柿本人麻呂 4:田子の浦に うち出でてみれば 白妙の 富士の高嶺に 雪は降りつつ / 山部赤人 5:奥山に 紅葉踏みわけ 鳴く鹿の 声きく時ぞ 秋は悲しき / 猿丸大夫 6:かささぎの 渡せる橋に おく霜の 白きをみれば 夜ぞふけにける / 中納言家持 7:天の原 ふりさけ見れば 春日なる 三笠の山に 出でし月かも / 安倍仲麿 8:わが庵は 都のたつみ しかぞすむ 世をうぢ山と 人はいふなり / 喜撰法師 9:花の色は うつりにけりな いたづらに わが身世にふる ながめせしまに / 小野小町 10:これやこの 行くも帰るも 別れては 知るも知らぬも 逢坂の関 / 蝉丸 11:わたの原 八十島かけて 漕ぎ出でぬと 人には告げよ 海人の釣舟 / 参議篁 12:天つ風 雲の通ひ路 吹き閉ぢよ をとめの姿 しばしとどめむ / 僧正遍照 13:筑波嶺の 峰より落つる 男女川 恋ぞつもりて 淵となりぬる / 陽成院 14:陸奥の しのぶもぢずり 誰ゆゑに 乱れそめにし われならなくに / 河原左大臣 15:君がため 春の野に出でて 若菜つむ わが衣手に 雪は降りつつ / 光孝天皇 16:たち別れ いなばの山の 峰に生ふる まつとし聞かば 今帰り来む / 中納言行平 17:ちはやぶる 神代も聞かず 竜田川 からくれなゐに 水くくるとは / 在原業平朝臣 18:住の江の 岸による波 よるさへや 夢の通ひ路 人めよくらむ / 藤原敏行朝臣 19:難波潟 みじかき芦の ふしの間も 逢はでこの世を 過ぐしてよとや / 伊勢 20:わびぬれば 今はた同じ 難波なる みをつくしても 逢はむとぞ思ふ / 元良親王 21:今来むと 言ひしばかりに 長月の 有明の月を 待ち出でつるかな / 素性法師 22:吹くからに 秋の草木の しをるれば むべ山風を 嵐といふらむ / 文屋康秀 23:月見れば ちぢにものこそ 悲しけれ わが身一つの 秋にはあらねど / 大江千里 24:このたびは ぬさもとりあへず 手向山 紅葉の錦 神のまにまに / 菅家 25:名にしおはば 逢坂山の さねかづら 人にしられで くるよしもがな / 三条右大臣 26:小倉山 峰のもみぢ葉 心あらば 今ひとたびの みゆき待たなむ / 貞信公 27:みかの原 わきて流るる 泉川 いつ見きとてか 恋しかるらむ / 中納言兼輔 28:山里は 冬ぞさびしさ まさりける 人目も草も かれぬと思へば / 源宗于朝臣 29:心あてに 折らばや折らむ 初霜の 置きまどはせる 白菊の花 / 凡河内躬恒 30:有明の つれなく見えし 別れより あかつきばかり 憂きものはなし / 壬生忠岑 31:朝ぼらけ 有明の月と 見るまでに 吉野の里に 降れる白雪 / 坂上是則 32:山川に 風のかけたる しがらみは 流れもあへぬ 紅葉なりけり / 春道列樹 33:ひさかたの 光のどけき 春の日に 静心なく 花の散るらむ / 紀友則 34:誰をかも 知る人にせむ 高砂の 松も昔の 友ならなくに / 藤原興風 35:人はいさ 心も知らず ふるさとは 花ぞ昔の 香ににほひける / 紀貫之 36:夏の夜は まだ宵ながら 明けぬるを 雲のいづこに 月宿るらむ / 清原深養父 37:白露に 風の吹きしく 秋の野は つらぬきとめぬ 玉ぞ散りける / 文屋朝康 38:忘らるる 身をば思はず 誓ひてし 人の命の 惜しくもあるかな / 右近 39:浅茅生の 小野の篠原 しのぶれど あまりてなどか 人の恋しき / 参議等 40:しのぶれど 色に出でにけり わが恋は 物や思ふと 人の問ふまで / 平兼盛 41:恋すてふ わが名はまだき 立ちにけり 人知れずこそ 思ひそめしか / 壬生忠見 42:契りきな かたみに袖を しぼりつつ 末の松山 波越さじとは / 清原元輔 43:逢ひ見ての のちの心に くらぶれば 昔は物を 思はざりけり / 権中納言敦忠 44:逢ふことの 絶えてしなくは なかなかに 人をも身をも 恨みざらまし / 中納言朝忠 45:あはれとも いふべき人は 思ほえで 身のいたづらに なりぬべきかな / 謙徳公 46:由良のとを 渡る舟人 かぢを絶え ゆくへも知らぬ 恋の道かな / 曾禰好忠 47:八重葎 しげれる宿の さびしきに 人こそ見えね 秋は来にけり / 恵慶法師 48:風をいたみ 岩うつ波の おのれのみ くだけて物を 思ふころかな / 源重之 49:みかきもり 衛士のたく火の 夜は燃え 昼は消えつつ 物をこそ思へ / 大中臣能宣 50:君がため 惜しからざりし 命さへ 長くもがなと 思ひけるかな / 藤原義孝 51:かくとだに えやはいぶきの さしも草 さしも知らじな 燃ゆる思ひを / 藤原実方朝臣 52:明けぬれば 暮るるものとは 知りながら なほうらめしき 朝ぼらけかな / 藤原道信朝臣 53:嘆きつつ ひとり寝る夜の 明くる間は いかに久しき ものとかは知る / 右大将道綱母 54:忘れじの 行く末までは かたければ 今日を限りの 命ともがな / 儀同三司母 55:滝の音は 絶えて久しく なりぬれど 名こそ流れて なほ聞こえけれ / 大納言公任 56:あらざらむ この世のほかの 思ひ出に 今ひとたびの 逢ふこともがな / 和泉式部 57:めぐりあひて 見しやそれとも わかぬ間に 雲がくれにし 夜半の月かな / 紫式部 58:有馬山 猪名の笹原 風吹けば いでそよ人を 忘れやはする / 大弐三位 59:やすらはで 寝なましものを さ夜更けて かたぶくまでの 月を見しかな / 赤染衛門 60:大江山 いく野の道の 遠ければ まだふみもみず 天の橋立 / 小式部内侍 61:いにしへの 奈良の都の 八重桜 けふ九重に にほひぬるかな / 伊勢大輔 62:夜をこめて 鳥のそらねは はかるとも よに逢坂の 関はゆるさじ / 清少納言 63:今はただ 思ひ絶えなむ とばかりを 人づてならで 言ふよしもがな / 左京大夫道雅 64:朝ぼらけ 宇治の川霧 たえだえに あらはれわたる 瀬々の網代木 / 権中納言定頼 65:恨みわび ほさぬ袖だに あるものを 恋に朽ちなむ 名こそ惜しけれ / 相模 66:もろともに あはれと思へ 山桜 花よりほかに 知る人もなし / 前大僧正行尊 67:春の夜の 夢ばかりなる 手枕に かひなく立たむ 名こそ惜しけれ / 周防内侍 68:心にも あらでうき世に ながらへば 恋しかるべき 夜半の月かな / 三条院 69:嵐吹く み室の山の もみぢ葉は 竜田の川の 錦なりけり / 能因法師 70:さびしさに 宿を立ち出でて ながむれば いづこも同じ 秋の夕暮れ / 良暹法師 71:夕されば 門田の稲葉 おとづれて 芦のまろやに 秋風ぞ吹く / 大納言経信 72:音に聞く 高師の浜の あだ波は かけじや袖の ぬれもこそすれ / 祐子内親王家紀伊 73:高砂の 尾の上の桜 咲きにけり 外山の霞 立たずもあらなむ / 権中納言匡房 74:憂かりける 人を初瀬の 山おろしよ はげしかれとは 祈らぬものを / 源俊頼朝臣 75:契りおきし させもが露を 命にて あはれ今年の 秋もいぬめり / 藤原基俊 76:わたの原 漕ぎ出でて見れば ひさかたの 雲居にまがふ 沖つ白波 / 法性寺入道前関白太政大臣 77:瀬をはやみ 岩にせかるる 滝川の われても末に あはむとぞ思ふ / 崇徳院 78:淡路島 かよふ千鳥の 鳴く声に いく夜寝覚めぬ 須磨の関守 / 源兼昌 79:秋風に たなびく雲の 絶え間より もれ出づる月の 影のさやけさ / 左京大夫顕輔 80:長からむ 心も知らず 黒髪の 乱れて今朝は 物をこそ思へ / 待賢門院堀河 81:ほととぎす 鳴きつる方を ながむれば ただ有明の 月ぞ残れる / 後徳大寺左大臣 82:思ひわび さても命は あるものを 憂きにたへぬは 涙なりけり / 道因法師 83:世の中よ 道こそなけれ 思ひ入る 山の奥にも 鹿ぞ鳴くなる / 皇太后宮大夫俊成 84:長らへば またこのごろや しのばれむ 憂しと見し世ぞ 今は恋しき / 藤原清輔朝臣 85:夜もすがら 物思ふころは 明けやらで 閨のひまさへ つれなかりけり / 俊恵法師 86:嘆けとて 月やは物を 思はする かこち顔なる わが涙かな / 西行法師 87:村雨の 露もまだひぬ 真木の葉に 霧立ちのぼる 秋の夕暮れ / 寂蓮法師 88:難波江の 芦のかりねの ひとよゆゑ みをつくしてや 恋ひわたるべき / 皇嘉門院別当 89:玉の緒よ 絶えなば絶えね ながらへば 忍ぶることの よわりもぞする / 式子内親王 90:見せばやな 雄島のあまの 袖だにも ぬれにぞぬれし 色はかはらず / 殷富門院大輔 91:きりぎりす 鳴くや霜夜の さむしろに 衣かたしき ひとりかも寝む / 後京極摂政前太政大臣 92:わが袖は 潮干に見えぬ 沖の石の 人こそ知らね かわく間もなし / 二条院讃岐 93:世の中は 常にもがもな 渚こぐ あまの小舟の 綱手かなしも / 鎌倉右大臣 94:み吉野の 山の秋風 さ夜更けて ふるさと寒く 衣うつなり / 参議雅経 95:おほけなく うき世の民に おほふかな わが立つ杣に 墨染の袖 / 前大僧正慈円 96:花さそふ 嵐の庭の 雪ならで ふりゆくものは わが身なりけり / 入道前太政大臣 97:来ぬ人を まつほの浦の 夕なぎに 焼くや藻塩の 身もこがれつつ / 権中納言定家 98:風そよぐ ならの小川の 夕暮れは みそぎぞ夏の しるしなりける / 従二位家隆 99:人も惜し 人も恨めし あぢきなく 世を思ふゆゑに 物思ふ身は / 後鳥羽院 100:ももしきや 古き軒端の しのぶにも なほあまりある 昔なりけり / 順徳院
処理概要
- 保存した「百人一首」のテキストファイルから全件を読み込み、メモリ上に展開します
- 「百人一首」の番号入力を促します
- 「百人一首」から、好きな番号(1~100)を1つを入力します
- 入力した番号から、該当する歌、歌人をメモリ上から抽出して出力します
- 該当する番号と歌、歌人を、gTTSライブラリで音声ファイル(mp3)に変換・保存します
- 変換・保存した音声ファイル(mp3)を、pygameライブラリ の mixer.musicモジュールでストリーミング再生を行ないます
- ストリーミング再生が終了したら、再度、「百人一首」の番号入力を促します(2.に戻る)
音声ファイル変換+読み上げ処理:ソース例
それでは、テキストファイルを読み込んで、音声ファイル変換+読み上げ処理が出来る
ソースを紹介します。
保存した「百人一首」のテキストファイルは、「karuta_kanji_utf-8.txt」としています。
import os
import gc # メモリ処理
from gtts import gTTS
from pygame import mixer
from datetime import datetime as dt
import time
play_mp3 = "./mp3/karuta_voice.mp3"
list_data = []
in_file = "./data/karuta_kanji_utf-8.txt"
def Read_Data():
# ファイルを読み込み
with open(in_file, mode='r', encoding='utf-8-sig') as fp:
for i in fp:
list_data.append(i)
print("-----------------------------")
print("Load Karuta Data Succesfully")
print("Total Read Data : %s lines" %(len(list_data)))
print("-----------------------------")
return
Read_Data()
try:
while True:
# input()関数は、数値(整数)のみ
msg = input("Enter a No = ")
if (0 < int(msg)) and (int(msg) < 101):
print(list_data[int(msg) - 1])
karuta_list = list_data[int(msg) - 1]
tts = gTTS(karuta_list, lang='ja', slow=False)
tts.save(play_mp3)
mixer.init()
mixer.music.load(play_mp3)
mixer.music.play()
while mixer.music.get_busy():
time.sleep(10)
mixer.music.stop()
mixer.quit()
else:
print("1~100の範囲で指定して下さい")
except KeyboardInterrupt:
del list_data
gc.collect()
音声ファイル変換+読み上げ処理:実行例
実際に、ソースを起動して、音声ファイル変換+テキストファイル読み上げ処理を
実行してみましょう。
作成したソースの上部のタブメニューより、Run → Run Module を選択するか、
F5キーを押下して、ソースを実行します。
ソースを起動して、エラーが無ければ、IDLE Shell には、「百人一首」の番号入力を
促すメッセージが表示されますので、実際に入力してみましょう。
今回は、10番目と64番目を順番に入力してみます。
下記は、実際に10番目の句が IDLE Shell に表示された後、読み上げた歌、歌人になります。
下記は、実際に64番目の句が IDLE Shell に表示された後、読み上げた歌、歌人になります。
まとめ
今回は、Pythonでテキストファイルの内容を読み込んだ後、音声ファイルに変換して、
読み上げ処理を行う記事を紹介しました。
音声ファイルに変換して、読み上げ処理を実現するには、下記の2つのライブラリを
インストールする事で、可能となります。
- gTTS (Google Translate’s Text-to-Speech):Google翻訳の読み上げライブラリ
- pygame:ゲームを開発する為のライブラリで、mixer.musicモジュールを利用して、ストリーミング再生を実現します
次回は、Webスクレイピング処理を行った内容を、音声ファイルに変換して、
読み上げ処理を行う記事を紹介したいと思います。
- イラスト:いらすとや より引用














コメント