Help us understand the problem. What is going on with this article?

Vimが喋った

ども、Vimゴリラです。

はじめに

以前、Vimの翻訳プラグインtranslate.vimを作ってからブラウザで翻訳する機会がほとんど無くなりました。
普段は日本語と英語を交互で翻訳することが多く、ふと英語の発音をVimで聞けたらいいなぁと思い、5分くらいでぱぱっと作りました。

どんな感じ?

こんな感じです。Qiitaは動画を載せられ無いのでツイートの方で見て頂ければと思います。
https://twitter.com/gorilla0513/status/1180480069371719680?s=20

導入

READMEを参照してください。

1点注意ですが、このプラグインは内部でsayコマンドを使用していて、このコマンドはMacOSにしかないため、Mac以外はこのプラグインを使えないです。

使い方

とても簡単です。:Say を実行するだけです。
もちろん選択したテキストを翻訳することもできます。

また:Say "my name is gorilla"といった感じで引数を渡すことで、
引数のテキストを読み上げてくれます。

ボイスの変更

vimrcに次のように設定を書くことで変更できます。

let g:say_voice = 'Kyoko'

デフォルトのボイスは英語のAlexになっています。sayで使用できる言語は日本語や中国語、韓国語などがあります。
詳しくはREADMEを参照してください。

仕組み

Vimでsayコマンドを非同期で実行しているだけです。
メインの処理はたったこれだけ。

function! say#say(start, end, ...) abort
    let text = join(getline(a:start, a:end), "\n")
    if a:0 != 0
        let text = a:1
    endif

    let voice = get(g:, 'say_voice', 'Alex')
    let cmd = ['say', '-v', voice, text]

    call job_start(cmd, {
                \ 'err_cb': function('s:err_cb'),
                \ })
endfunction

getlineを使用して、選択した範囲のテキストを取得しています。
そして引数がある場合は、引数を優先するようにしています。

job_startsayコマンドを非同期で実行させています。
とても簡単ですね。

最後に

ぱぱっと作ったので、何か便利な機能を思いついたら改良していきたいと考えています。
欲を言えば他のOSでもテキストを読み上げる方法があれば、インターフェイスをきちんと固めて対応したいと考えています。

もしこの方法で実現できるといった情報があればぜひコメントを頂けると助かります。

gorilla0513
https://twitter.com/gorilla0513
https://github.com/skanehira
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした