2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

tmuxに表示している文章をVOICEROIDに読み上げてもらう

Last updated at Posted at 2021-10-17

tmuxからスクリプト越しにAssistantSeikaを使うことで、VOICEROIDに読み上げをしてもらいます。

前提

  • AssistantSeikaが対応する読み上げソフトをインストールします
  • AssistantSeikaをインストールする
    • SeikaSay2.exeから読み上げができるようセットアップします
$ neofetch distro kernel
distro: Arch Linux on Windows 10 x86_64
kernel: 5.10.60.1-microsoft-standard-WSL2
$ tmux -V
tmux 3.2a

スクリプトの用意

まず、以下のスクリプトを用意しました。seikaという名前をつけています。

# !/bin/bash

_TMP=$(mktemp -t seika.XXXXXX)
trap 'rm ${_TMP}* 2>/dev/null' EXIT

perl -0pe 's#\n##g' <"${1:-/dev/stdin}" >>"${_TMP}"

SEIKASAY2_DIR=/mnt/c/Apps/AssistantSeikaUtils
CID=2003
${SEIKASAY2_DIR}/SeikaSay2.exe -cid ${CID} -f "${_TMP}" >/dev/null

seikaは標準入力(または引数で指定したファイル)から改行文字を取り除いて、一時ファイルに保存します。
VOICEROIDは改行文字を空白と捉えていて、文章の途中に改行が含まれると、そこで一瞬読み上げを止めてしまいます。
ターミナルでは(というかテキストファイルでは)文章の折返しに改行文字を使うことがままあるので、このスクリプトではそれを取り除いています。

そして、一時ファイルを入力に、AssistantSeikaのCLIであるSeikaSay2.exeを実行することで、読み上げをしてもらいます。

tmuxの設定

.tmux.confに以下の行を追加します。

bind -T copy-mode M-s send-keys -X copy-selection\; run-shell -b 'tmux show-buffer | seika'

コピーモードにAlt-Sのキーバインドを設定します。

ここでは2つのtmuxコマンドを実行しています。send-keys -X copy-selectionで選択した範囲の文字をtmuxローカルのセレクションに保存します。

次にrun-shell -b 'tmux show-buffer | seika'でUNIXシェル向けにコマンドを実行します。-bはバックグラウンド実行です。これがないと、読み上げが終わるまでtmuxが止まります。tmux show-buffer | seikaがシェルコマンドです。tmux show-bufferは先程保存したセレクションの内容を標準出力に流します。seikaは前節で紹介したスクリプトですね。パイプ経由でセレクションの内容を受け取り、SeikaSay2.exeを起動します。

まとめ

以上の簡単な手順で、tmuxのコピーモードで文字列を選択し、Alt-Sを押下すると、読み上げをしてくれるようになりました。

コピーモードはこれまでターミナルの内容をクリップボードに保存するためだけに使っていましたが、ターミナル上の範囲を選択して、外部のコマンドに流し込んで、処理することが簡単にできるとわかったので、少し夢が広がったような気がします:smiley:

AssistantSeikaのおかげで、スクリプトと設定による繋ぎこみだけで、text-to-speechができました。作者さんにはこの場を借りて、お礼申し上げます。ありがとうございました。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?