3
3

PDF連動型ずんだもんナレーター

Last updated at Posted at 2024-01-01

PDFページに連動したVOICEVOXナレーター

このプログラムは、PDFを読み取りその内容を表示しながら、VOICEVOXでプログラム中の原稿を読上げます。

動作環境

WindowsでもLinuxでもVOICEVOXが起動していれば動作すると思います。
動作チェックはLinuxでしかやっていません。

必要なライブラリ

PySimpleGUI、pdf2image、requests、pyaudio

code

コードはご自由に変更してお使いくださいませ。

#!/usr/bin/python3
# Programed By M.kawase embed-ai labo. LTD
import PySimpleGUI as sw
import pdf2image as p2i
import requests as req
import json
import pyaudio as pa

wdef = [[sw.Image(key="IM01")]]
imgs=p2i.convert_from_path('./Linux01.pdf',80,fmt='png')
#                File Path  ^-----------^  ^^ 大きさ
# ここにナレーションを入れます。('ナレーション',キャラ番号)の順で入れます。
mess = [
    ('読上げテスト1',3),
    ('読上げテスト2',3),
    ('読上げテスト3',3),
    ('',0)
]
dispnum=0

# sperk function
def speak(mess,no):
    qu_requrl='http://localhost:50021/audio_query'
    ad_requrl='http://localhost:50021/synthesis'
    reqprm = (('text',mess), ('speaker',no), )
    rsvdat = req.post(qu_requrl, params=reqprm)
    wavdat = req.post(ad_requrl,
        headers={"Content-Type": "application/json"},
        params = reqprm,
        data = json.dumps(rsvdat.json())
    )
    wav = wavdat.content
    dev = pa.PyAudio()
    dev_stream = dev.open(format=pa.paInt16,
        channels=1,rate=24000,output=True)
    dev_stream.write(wav)
    dev_stream.close()
    dev.terminate()

win = sw.Window('vvpdf',wdef,size=(600,400))
for img in imgs:
    img.save('pdfimg.png','PNG')
    win.finalize()
    win['IM01'].Update(filename='pdfimg.png')
    e,v=win.read(timeout=1000,timeout_key="T01")
    speak(mess[dispnum][0],mess[dispnum][1])
    dispnum += 1

win.close()

解説動画

このプログラムを使った改修点の解説動画を上げてあります。

スピーカー番号を調べる方法

ずんだもん以外の声を使う場合は、番号を変える必要がありその番号を調べる方法です。

キャラによりライセンス表記が異なりますので各キャラクタでご確認ください。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3