程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++調用有道翻譯API實現在線翻譯之發聲篇

C++調用有道翻譯API實現在線翻譯之發聲篇

編輯:C++入門知識

大概半月前寫了一篇博文:C++中使用Curl和JsonCpp調用有道翻譯API實現在線翻譯, 得到大家的熱情捧場,有人看了文章說要是能發聲不是更好,我覺得說的也是哈,能聽到專家的標准發音,那該是多美的一件事,那我就研究下呗。這段時間一直在忙著學習Unix Network Programming的東西,終於在今天下午抽出時間來完成這個事情。

好了,閒話不說,我給大家說說我的語音辭典開發之旅吧!開發環境Ubuntu + GCC4.7

一、 聲音從哪裡來

要讓辭典發音,也就是說,我們需要得到這個單詞的發音的音頻,之前實現辭典用的是有道辭典的API,很好用,所以這次也就欣欣然選擇有道發音API來得到單詞的發音,API地址如下:

 http://dict.youdao.com/dictvoice?audio=

諸如,你要得到futures這個單詞的發音,你只需要在浏覽器輸入http://dict.youdao.com/dictvoice?audio=futures,然後就可以聽到一個女聲的futures的發音了!

二、 怎麼使用程序去發音

1. 把聲音拿回來

聲音有了,但是我們要自己實現程序去作這個事情,難道我還每次去打開浏覽器訪問以下不成!No,no!我沒有想到太好的辦法,就用我認為很土很笨的方法吧!

我把API返回的聲音存成mp3文件,然後再想辦法呗,後來一想,也有必要哈,把查過的這個單詞存下來了,如果一次沒有聽清楚,我還可以再聽一次撒!那動手呗,把聲音先放到硬盤再說!

我們需要使用的三方庫還是上一篇文章C++中使用Curl和JsonCpp調用有道翻譯API實現在線翻譯用到的libcurl,直接貼代碼:

 #include 
 
 FILE * 
 size_t voice_writer( *ptr, size_t size, size_t nmemb,  *       written = fwrite(ptr, size, nmemb, (FILE *      }

上面這個方法在以下的代碼中,也就是curl的回調中會用到:

  main( argc,  *      CURL *      curl =     std:: voice_url =      voice_url += argv[      
     ((fp = fopen(, )) ==           exit(      
        
       }

好了,根據我的想法,編譯運行之後一個voice.mp3的文件就放在了我的當前目錄中!(PS:不是完整代碼,其實就差幾個頭文件而已,自己加上吧!)

2. 把聲音放出來

聲音到手,我先試著用播放器聽了下,沒錯,正是我想要的!下一個步驟,我們要在程序中把聲音放出來,總不能每次用播放器去聽吧!C++中如何播放mp3,以前作VC開發的時候貌似遇到過,linux下我還是第一次面對這個需求,怎麼辦?問GOOGLE,輸入諸如C++ mp3 encoder library,找了一圈,貌似也沒個太好的庫供我使用,我可不喜歡解碼開始!腫麼辦?我想到了另外一個方法,system方法,是的,你沒看錯,就是他!這個最拿手了,SoX大家應該都知道,SoX是Sound eXchange的簡寫,主頁見這裡。SoX在音頻處理領域有瑞士軍刀的美稱,支持很多格式的音頻文件,如 WAV,MP3,MPG,OGG,FLAC 等等!沒有安裝的童鞋看這裡:

  apt-get   apt-get  sox libsox--all

安裝成功之後,只需要使用以下命令去播放既可:

 play voice.mp3

好了,走遠了,我們繼續回到我們的system方法吧:

 system();

Are you kidding me? 不好意思,我確實沒有太好的方法了!(PS:有其他的C++庫可以播放MP3,有知道的朋友歡迎指導,我也很想用個比較perfect的方法!)

三、 小結

好了,這就是今天的主要內容,使用之前的一篇文章中提供的辭典源碼,和今天的發音源碼整合到一起,就是一個准perfect的在線發音辭典了,這裡不再貼出所有源碼,感興趣的可以自己整合一下!

用程序改變世界,我是敢想敢做的程序猿。感謝閱讀,希望幫到大家!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved