楽しいプログラミング。Pythonで日本語を喋らす

pythonの画像
豆知識

Pythonに日本語を喋らすだけのプログラミングです。というよりはほぼlinuxパソコンの設定となっています。

環境:ubuntu、open-jtalk

open jtalkのインストール

sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic htsengine libhtsengine-dev hts-voice-nitech-jp-atr503-m001

hts-voice-niteck-jp-atr503-m001が入らない方はリポジトリのmultiverseが有効になっていない可能性があります。私はここで少しつまづきました。色々設定しているうちにmultiverseがオフになっていたようです。 そしてデフォルトの音声が怖いと言うことで音声ファイルを追加し使えるようにします

wget https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.6/MMDAgent_Example-1.6.zip/download -O MMDAgent_Example-1.6.zip
unzip MMDAgent_Example-1.6.zip MMDAgent_Example-1.6/Voice/*<br><br>sudo cp -r MMDAgent_Example-1.6/Voice/mei/ /usr/share/hts-voice

Pythonコードです。このコードにより喋ります。よく理解できてないですが、おそらくパイプ等を使い、jtalkのコマンドを呼び出していると思われます。音声再生はaplayを使っているらしい。

#coding: utf-8
import subprocess
from datetime import datetime

def jtalk(t):
    open_jtalk=['open_jtalk']
    mech=['-x','/var/lib/mecab/dic/open-jtalk/naist-jdic']
    htsvoice=['-m','/usr/share/hts-voice/mei/mei_normal.htsvoice']
    speed=['-r','1.0']
    outwav=['-ow','open_jtalk.wav']
    cmd=open_jtalk+mech+htsvoice+speed+outwav
    c = subprocess.Popen(cmd,stdin=subprocess.PIPE)
    c.stdin.write(t.encode())
    c.stdin.close()
    c.wait()
    aplay = ['aplay','-q','open_jtalk.wav']
    wr = subprocess.Popen(aplay)

def say_datetime():
    d = datetime.now()
    text = '%s月%s日、%s時%s分%s秒' % (d.month, d.day, d.hour, d.minute, d.second)
    jtalk(text)

if __name__ == '__main__':
    say_datetime()

以上のコードをjtalk.pyとして保存します。同じディレクトリで

#coding: utf-8
import jtalk

jtalk.jtalk('会話のテスト')

と別ファイルから呼び出しすると発話します。jtalk.pyをそのまま実行しても時刻を喋るはずなのですが、エンコーディングの問題がでて喋らない場合があります。(UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe6 in position 2: ordinal not in range(128))エンコードを指定しているのに喋らないので何故かわからないですが以下を先頭に置くことにより機能しました

import sys
# sysモジュールをリロードする
reload(sys)
# デフォルトの文字コードを変更する.
sys.setdefaultencoding('utf-8')

他のファイルからjtalk.pyを呼び出す場合には問題が起こらなかったので他ファイルから呼び出せばよいでしょう。

以上で好きな言葉を喋らせる事ができます。色々喋らせられるのでプログラミングが楽しくなるでしょう。それではまたお会いしましょう。

参考サイト:
http://web.wakayama-u.ac.jp/~kazama/lab/python/i18n.html
https://qiita.com/kkoba84/items/b828229c374a249965a9

本山積みの図
Tips
パソコンで本を作ろう。フォトブックや絵本、その他小冊子などの製本方法

皆様こんにちは。今日はパソコンを使った本の作成方法についてご紹介いたします。 パソコンの活用方法色々ありますね。中でも本を作るなんていうのはちょっとワクワクする使い方ではないでしょうか?製本方法にも色々ありますが、パソコンで簡単にできるのは小冊子などを作るための中綴じ(なかとじ)です。その他の製本もできるかもしれませんが中綴じはとても簡単にできるのでおすすめ …

Windows 11
豆知識
Windows11が出る!Windows11は無償アップデート可能だが要件が厳しい。

最後のバージョンと聞いていたWindows10の後継のWindows11が出ることになりました。あちこちで書かれていたことは結果的に誤報といういう結果になりそうです。こちらでもずっと使えるOSだとか書いていたので誤報となり申し訳ございません。 Windows10はいつまで使えるか? Windows11は無償アップデート可能のようですが、システムを導入するのに …

暗号化の元
豆知識
Windowsの秘密の質問はセキュリティーの欠陥になる?

Windowsではローカルアカウントを作りログインする機能がついています。最近ではマイクロソフトアカウントでログインする人も増えていますが、なんとなく気持ち悪いので、ローカルアカウントを作り続ける人も多いのではないでしょうか?ローカルアカウントを作ると、いつのまにか秘密の質問を答えさせられるようになっていました。この秘密の質問を使うとWindowsのパスワー …