お得情報  | ➡

楽しいプログラミング。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

パソコンに向かう人アイキャッチ
アプリ
文字変換を便利に使おう。IMEの種類や辞書登録など

皆様こんにちは、IMEを使っていることと思います。IMEって何?と思う方もいらっしゃるかもしれません。 IMEはInput Method Editorの略でパソコンやスマートフォンに文字を入力する際に必要になるソフトウェアです。 これがあるおかげで私達はPCに日本語を入力することができるわけですね。 そこで今日はIMEについて掘り下げて見たいと思います。 I …

豆知識
iPadでWindowsを操作するリモートデスクトップができるアプリ

iPadでリモードデスクトップクライアントになるアプリをマイクロソフトが出しているようです。 iPadでものを書くと変換が自動でされてびっくりしました。 ブルートゥースマウスとキーボードが役に立ちます。 app storeをマイクロソフトリモートデスクトップというワードで検索すると出てきます。 通常通りIPアドレスとユーザ名、パスワードを入力するとリモートデ …

トンネル
アプリ
SSH通信でリモート作業、SSHとは

皆様こんにちは。皆様SSHをご存知ですか。SSHとはなんなのでしょうか。 実はサーバをリモートで操作する事ができるのがSSHです。Secure Shellの略のようです。linuxを使っていると殆どの作業はコマンドラインから行えます。そんな中、コマンドをリモートから発行できるのがSSHです。応用でポートフォワードなどを行って安全なトンネルを作ってTCP通信を …