知らないことを調べるブログ

映画の分からないところを調べてまとめる場所にしていきます。

将棋が沼だというのは覚悟していたが

 いくつかの提出課題がまだ残っている。きょうは起きてからずっと勉強をしていた。眼精疲労がつらい。体に無理がかかっている。しかし、一週間後に学校の試験がある。息抜きに何か違うことがしたい。そこでブログを書く。

 

 

 一年前、基本情報技術者という試験に合格した。で、先月応用情報技術者という試験を受けた。年末に合否がわかる。手応えはそこそこあるので余裕がある。基本情報技術者の時は手応えがなかったので余裕がなかった。今回は気が楽だ。情報処理技術者試験には高度区分という試験がいくつかある。受けてみたい。他にも受けてみたい資格試験があり、来年はそのうちのいずれかを受けてみようかなとぼんやり考えている。

 

 資格を取る余裕があるほどには、学校の単位取得が順調にいっている。単位取得のためのレポートの多くでは、「〜についてあなたの考えを述べなさい」という問いを出される。そのとき、それなりに言いたいことを書くことができている。ひょっとすると、このブログでの感想文書きが、引用ありの長文を書く訓練になっているのかもしれない。

 

 しかし……とうとう将棋を始めてしまった。楽しい。おかげで勉強に身が入らない。将棋が沼だというのは覚悟していたが、沼の性質をわかっていなかった。やっていて楽しい瞬間がごほうびだとすると、ごほうびの回数が多い。将棋では部分的な最善手を定跡や手筋と呼び、これが大量にある。初歩的なものは実戦ですぐに活きる。ごほうびである。喜び、次の手筋を覚えようとなる。勝てるコンピュータのレベルが上がる。喜ぶとなり、沼に沈む。棋力は向上したが、一日の行動ポイントを将棋にごっそり持っていかれている。眼精疲労の原因はスマホでの対局だとおもう。

 

 

 いま僕は将棋だ。ぴよ将棋5級と互角になってきた。いつ初段になれるだろうか。

横浜1泊2日

 横浜で、クイズ研究会的なもののオフ会があったので参加した。初回参加時の衝撃的な楽しさも忘れがたいけど、コミュニティも僕の状態も変化するので、その度に組み合わせが変わる。以前はグレーアウトしていた(でも僕から存在が確認できる)おもしろについて、会を重ねるごとに、問い合わせることが可能になってきた。たぶん、問い合わせ技術の向上と、参加回数による実績解除があったんだと思う。技術向上の成果が出るのはうれしいし、得られる刺激がくせになるので、また参加したいとなり、時間があれば必ず参加するようにしている。

 

 規模は10人くらいで、持ち寄ったクイズを解き合い、それについてあれこれ話す、というのを10時間くらい続ける。昔出したクイズのリメイク、新作、今のクイズどうだった、あのクイズは良かった、とかいろいろやっているとあっという間に時間が過ぎた。

 

 食事は横浜なので中華で、地元参加者おすすめの穴場レストランで食べた。ここがまた良くて、料理の質・料理の量・会話のしやすさ、すべて文句なし、地元参加者GJとなり、よかった。角煮美味しかったな。自分で作るものより味が控えめで、油のぶりぶり感が薄くて、とても食べやすかった。今度まねして作ろうと思う。

 

 この会はクイズを必ず持ち込む必要はなく、回答のみ、あるいはROM専でもふつうに参加できる。どの立場でもそれぞれ楽しめると思う。思うというのは、ぼくが毎回持ち込み参加者なので想像するしかない。今回もいくつか作り、解いてもらった。

 

 参加者のうちの一人とは宿泊先が偶然近場になり、一緒に移動したので歩きながらとりとめなく雑談した。これがひどく楽しくて、お互い(少なくとも僕にはそう映った)エキサイトしてめちゃ笑って何度か道を間違えながら宿泊先に向かった。

 

 泊まったのは適当なカプセルホテルで、入り口がすだれ(鍵無し)のコンテナを借りた。セキュリティが限定的だけど、許容範囲だったので、朝食と風呂の時はロッカーを使い、連絡先を交換した参加者とやりとりしながら寝た。

 

 

 札幌から横浜への移動が6時間と長いのを除けば、支払ったお金のお釣りが多く感じるくらい、快適で充実した、モデルケースのような旅だった。幹事をねぎらうのを忘れていたので、あとで連絡する。

フォルダにある全てのtxtを音声合成mp3にするPythonコード(open-jtalk)

 教科書の復習に音声合成がべんり。Windowsではsoftalkを使っていた。でも、Linuxで使えるソフトがぱっと見つからない。なのでPythonで作った。open-jtalkを使った。

jtalk.py

# -*- coding: utf-8 -*-
u"""フォルダにある全てのtxtを音声合成mp3にする."""
import subprocess
from pydub import AudioSegment
import glob
import os


def jtalk(i, t, n):
    u"""
    日本語テキストから音声合成wavファイルを生成.

    via http://qiita.com/kkoba84/items/b828229c374a249965a9.
    """
    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.3']
    outwav = ['-ow', n + '-' + str(i) + '.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 = ['aplay', '-q', 'open_jtalk.wav']
    # wr = subprocess.Popen(aplay)


def text2jtalk():
    u"""フォルダにある全てのtxtを音声合成mp3にする."""
    # フォルダ内にあるtxtの名前をリストにする
    textlist = glob.glob('*.txt')
    for text in textlist:
        n = text.rstrip('.txt')
        # openjtalkは1024バイトまでしか一度に処理できないので、改行で区切る
        ts = open(text, 'r').read().split('\n')
        ts = filter(lambda s: s != '', ts)
        for i, t in enumerate(ts):
            jtalk(i, t, n)
        # 区切って生成したwavを結合する
        s = AudioSegment.from_wav(n + '-0.wav')
        os.remove(n + '-0.wav')
        for i in xrange(len(ts) - 1):
            s += AudioSegment.from_wav(n + '-' + str(i + 1) + '.wav')
            os.remove(n + '-' + str(i + 1) + '.wav')
        # mp3で書き出す
        s.export(n + '.mp3', format='mp3')
        print n + '.mp3'


if __name__ == '__main__':
    text2jtalk()

ほげほげ.txt

今日はいい天気ですね。
ほげー

にゃーん.txt

にゃわわ・・・

 上記3ファイルを同一ディレクトリに配置してjtalk.pyをビルドすると、ほげほげ.mp3とにゃーん.mp3が生成される。


 open-jtalkは、テキストのうち1024バイトまでで処理が止まるようにデフォルトで制限されている。なので、文章を改行で区切って複数個音声を作って、最後にpydubで結合することで対処した。なので改行されずに300文字ちょっと続くとトリミングが起こる。エラーは出ない。適度に改行しよう。

 固定長で300文字ずつ区切ればいいんだけど、Pythonでマルチバイト文字をカウントする方法がわからない。しょうがない。

 ちなみに、open-jtalkはCで書かれたソースファイルの定数に1024と書かれているらしい。それを書き換えればいけるとネットで見た(参考1)。でも、apt-getでインストールしたときどこにソースファイルがあるのかわからない。apt-fileで探しても、

apt-file search open_jtalk
open-jtalk: /usr/bin/open_jtalk
open-jtalk: /usr/share/man/man1/open_jtalk.1.gz

アーカイブの場所しか表示されない。ソースファイルはどこにあるの?

参考1 openJTalkを10.6にインストール(1) « こざくらラボ

道具が増えた

 趣味でやっているWebサイトの作り直しがおわった。公開して、お疲れ様とねぎらいをもらった。

 

PHPだったところがCGIに置き換わった。壊れているところを直した。DBを整頓した。ファイルを圧縮した。その結果、仕組みのわからないコピペコードがなくなった。ファイルの形式がそろった。管理作業の大部分が自動化された。Webサイトが軽くなった。

 

 Pythonのモジュールに触れられて良かった。よく使ったのはreとsqlite3とMySQLdbとftplibとlxmlとcgi。アンドロイドアプリ開発と合わせて、二ヶ月ほどPythonをぽちぽち触った。

 

 小さいコミュニティなので、ぼくが作ったサイトをここで明らかにはしない。id:Hokanokoとそのサイトを関連付けることは避けたほうがいいように思う。承認欲求がないことはないけど、コミュニティのインフラみたいなサービスなので、個人の色が付いてしまって利用者が限られることのないようにしている。

 

 ここからちょっともやもやした考え(……とサービス開始当時から考えてきたのだけれど、最近は誰がやっているか明らかになったところで、利用者は別に気にしないんじゃないかと考えている。運営者がとんでもない嫌われ者でもない限り。そのコミュニティでいろいろ発言しているとき、一時期「ぼくはみんなから嫌われているのでは?」みたいな自意識があったんだけど、これは著しくバランスを欠いた意見だと最近気付いてきた。「ああ、そんな人いるね」「ずっとサービスを続けているのは、まあ助かるよね」ぐらいのバランスなんじゃないかと思う。誰かを嫌い続けるのってエネルギーのいる行為だし、そんなエネルギーがぼくに向けられているとはちょっと思えない……。)もやもやおわり。

 

 そんなわけで、reとsqliteとKivyという道具が増えたことがうれしい。あと、最近仲良しになった人とよく話していて、お互いいい感じに敬意がある感じなので、それが楽しい。