讓 gedit 能查詞發(fā)聲

讓 gedit 能編輯能高亮能查詞能發(fā)聲

單詞量小,閱讀或編輯文檔常查單詞。
打開瀏覽器,輸入,查詞,再從網(wǎng)頁內(nèi)容里挑自己需要的部分。
想聽單詞讀音,得看網(wǎng)絡(luò)狀況,有時等好幾秒也不一定聽得到。
在編輯文檔的過程中,難免會去做其他事,得切換窗口,麻煩。
于是我就想,有沒有這樣的編輯器:

  • 支持 Markdown 語法高亮。
  • 能有 shell 窗口來操作電腦。
  • 能查單詞,有大概的翻譯即可。
  • 單詞真人語音發(fā)聲。

答案是沒有。(或許是我沒找到,2015 年 05 月 13 日。)
混跡碼農(nóng)圈多年的呵呵俠表示不服,哥想去試試,看能不能搞出個能編輯高亮查詞發(fā)聲的小東西。

需求分析

  • 語法高亮
  • shell 窗口
  • 簡單查詞
  • 人聲單詞

解決思路

  • 編輯器 gedit 可以有語法高亮。
  • 編輯器 gedit 可以有 shell 窗口。
  • 調(diào)用網(wǎng)絡(luò)詞典的 API,在 shell 里查單詞。
  • 搞個單詞音頻庫,通過命令行播放人聲單詞。

咦,貌似問題可以解決哎!

折騰 gedit

Ubuntu 自帶 gedit,新版本 Markdown 高亮已經(jīng)有了。
嗯,我去找找 Terminal 的插件。

安裝 gedit 插件

$ sudo apt-get install gedit-plugins

開啟 Terminal

1 在 gedit 窗口里依次點擊 Edit -> Preferences -> Plugins,勾選 Embedded Terminal 插件。

Plugins - Embedded Terminal

2 在 gedit 窗口里依次點擊 View -> Bottom Panel,選擇 Terminal 窗口。

默認黑底白字 shell 窗口

以上,語法高亮和 shell 窗口都有了,繼續(xù)努力!

用有道 API 查詞

經(jīng)過一番考察,決定用有道 API 來查單詞。

申請 key

申請資料隨便填,不和別人重樣就行。

得到 key 后用 HTTP GET 方法查詞

如查 precious 這個詞:

$ http -b get "http://fanyi.youdao.com/openapi.do?keyfrom=nlz137&key=1042337191&type=data&doctype=json&version=1.1&q=precious"

會得到的是服務(wù)器返回的 JSON 數(shù)據(jù),多且亂,得解析一下抽取自己想要的內(nèi)容。

太陽底下沒有新鮮事兒,肯定有人已經(jīng)造過輪子了。
果然,在 全球最大同性別程序員社交網(wǎng)站 找到了 命令行 JSON 處理工具。
下載,解壓,改屬性,丟進 ~/bin 里待執(zhí)行。

$ chmod 755 jq-linux-x86_64-static
$ cp jq-linux-x86_64-static ~/bin/clijq

現(xiàn)在能提取到單詞的基本釋譯了。

$ http get "http://fanyi.youdao.com/openapi.do?keyfrom=nlz137&key=1042337191&type=data&doctype=json&version=1.1&q=precious" | clijq '.basic.explains'
[
  "adj. 寶貴的;珍貴的;矯揉造作的",
  "n. (Precious)人名;(英)普雷舍斯,普雷舍絲(女名)"
]

每次都輸入一長串是不是很「二」?
莫慌,查詞命令先放著,最后會整合到腳本里。

單詞真人發(fā)音

又不是「二代」哪有錢雇小妹來現(xiàn)場發(fā)音,用人聲語音庫嘛,網(wǎng)上一搜就找到了。

設(shè)置 142000 單詞語音庫

下載,解壓,然后人聲單詞就安靜地躺在硬盤里了。

$ ls  ~/Music/voice/
a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z

安裝 SoX 播放器

$ sudo apt-get install sox
$ sudo apt-get install sox libsox-fmt-all

安裝完成即可播放音頻,執(zhí)行以下命令聽個聲音先。

$ play /home/han/Music/voice/p/precious.wav

還是老規(guī)矩,播放命令先放著,最后會整合到腳本里的。

接下來得去看看 Shell 編程基礎(chǔ),很久沒弄 bash 了,都忘了……

寫個 say 腳本

$ touch ~/bin/say
$ chmod 755 ~/bin/say

vim ~/bin/say 寫腳本內(nèi)容如下:

#! /bin/bash

if [ $# -ne 1 ]; then
    echo "One word at a time."
else
    WORD=$1
    FILENAME="${WORD}.wav"
    VOICEDIR="/home/han/Music/voice/"
    FILE=$(find ${VOICEDIR} -iname ${FILENAME})

    play ${FILE} 1> /dev/null 2>&1
fi

if [ $? == 0 ]; then
    DATE=`date +%Y'-'%m'-'%d'_'%I':'%M':'%S`
    LOG="/home/han/Music/say.log"
    echo -e  "${DATE}\n$1\n" >> $LOG &

    http -b get "http://fanyi.youdao.com/openapi.do?keyfrom=nlz137&key=1042337191&type=data&doctype=json&version=1.1&q=$1" | clijq '.basic.explains'
else
    echo "Vocabulary not found."
fi

大功告成

來來來,咱們來 say hello :

$ say hello
既有人聲發(fā)音,又有單詞簡譯。

什么,為什么是 say? 因為 MBP 里有 say,任性咯。

對于習慣 Vim 的同學,稍加改動就會更順手好用。
方法我就不寫了,Vimer 都愛自己折騰 2333

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,847評論 9 468
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,365評論 25 708
  • Mayank Sharma 測試了5款不僅僅是能處理文字的超強文本編輯器。 如果你使用Linux已經(jīng)有很長一段時間...
    陌辭寒閱讀 6,066評論 0 6
  • 今天,考研復試結(jié)束,想要談?wù)勛约旱南敕ā?佳谐踉嚋蕚淦陂g,真的是會讓人成長很多,在學習方法,與人相處,搜集資料...
    ChineseMedical閱讀 437評論 0 0
  • 明珠小學國慶活動第二季 五星紅旗是中華人民共和國的象征和標志,我們熱愛、尊重我們的國...
    姜華閱讀 994評論 0 1

友情鏈接更多精彩內(nèi)容