LoginSignup
7
19

More than 5 years have passed since last update.

pythonで作成したもの 1

Last updated at Posted at 2017-10-27

お疲れ様です。

pythonを使ってweb操作の自動化と、簡単な音声合成を試してみたので記事として残しておきます。

seleniumでsafariの操作を自動化

seleniumは、pythonでsafariやchromeを操作するための拡張機能のようなものです。
自分はこのseleniumを使って、hahtのログイン操作を自動化してみました。

動かす際には、safariの「開発」メニューから「リモートオートメーションを許可」にチェックを入れる必要があります。

login.py
from selenium import webdriver
driver = webdriver.Safari()
driver.get('<hahtトップページのURL>')         #webサイトの指定
entry = driver.find_element_by_name("LUA") #webサイトのソースコードからログインID欄を指定
entry.send_keys("<ユーザー名>")                            
entry = driver.find_element_by_name("PWD") #同様にパスワード欄を指定
entry.send_keys("<パスワード>")                             
btn = driver.find_element_by_name("login") #同様にログインボタンを指定
btn.click()                                #クリック

自分は以下のサイトを参考に作成しました。
簡単にできるのでpythonとコーディングの勉強にちょうどいいと思います。
PythonとSeleniumでブラウザ操作を自動化したよ
python+seleniumでTwitterにログインしてみる

jtalkで音声合成

音声合成というほどでもないですが、キーボードから入力した言葉を音声で復唱してくれるスクリプトを組んでみました。

発声にはjtalkというフリープログラムを使用しています。
女声、または男声を選択できます。

speak.py
import subprocess
from datetime import datetime

def jtalk(t): #jtalkの定義と男声/女声の選択
    open_jtalk = ['open_jtalk']
    mech = ['-x', '/usr/local/Cellar/open-jtalk/1.10_1/dic']
    htsvoice = ['-m', '/usr/local/Cellar/open-jtalk/1.10_1/voice/m100/nitech_jp_atr503_m001.htsvoice']
    #htsvoice = ['-m', '/usr/local/Cellar/open-jtalk/1.10_1/voice/mei/mei_normal.htsvoice']
    speed = ['-r', '1.0']
    outwav = ['-ow', 'out.wav']
    cmd = open_jtalk + mech + htsvoice + speed + outwav
    c = subprocess.Popen(cmd, stdin=subprocess.PIPE)
    c.stdin.write(t)
    c.stdin.close()
    c.wait()
    aplay = ['afplay', 'out.wav']
    wr = subprocess.Popen(aplay)

def speak(): #入力から動作まで
    #d = datetime.now()
    #text = '%s月%s日、%s時%s分%s秒' % (d.month, d.day, d.hour, d.minute, d.second)
    while True:
        text =  raw_input('喋らせたい言葉を入力(終了:exit) >>>   ').lower()
        if text in ['トゥーの社長は?']:
            text = 'ごうたさんです'
            jtalk(text)
            break
        if text in ['exit']:
            break
        else:
            jtalk(text)


#if __name__ == '__main__':
speak()

こちらも下記を参考に作成しました。
macでコードから音声を喋らせる

このjtalk、発声はしてくれますがイントネーションに不自然な部分があります。
jtalkをインストールすると辞書ファイルも付いてくるので、これをもう少し弄ればより自然な発声にできるかもしれません(手間なのでやっていません)。

おわりに

何かを作る時、tensorflowやswiftなどはUIから簡単に作成できるのに対して、pythonは一からコードを書かなければなりません。

そのため初めて触れる方はとっつきにくいかもしれませんが、最初は基本的な構文(ifとかwhileとか、defやimportの意味とか)だけ覚えておけば大丈夫だと思います。
python3系 基礎文法
python-izm:python入門から応用までの学習サイト

webで探せばソースコードも山ほど見つかるので、
作りたいスクリプトがある時はソースコードを探してあとはコピペでもどうにかなります。

自分も全くの初心者なので、皆さんで学んでいきましょう!

7
19
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
7
19