文章

顯示從 8月, 2018 起發佈的文章

[應用] 中文語音合成+語音辨識 以百度的AI開放平台 in Python 開發

圖片
語音技術介紹         語音合成 (Text-To-Speech) 和語音辨識 (Speech Recognition) 的技術存在數十年,不過近年來將這語音的技術應用在蘋果的Siri和亞馬遜的echo設備裡。對開發者而言,語音技術最麻煩的是各種語言、不特定人的字庫辭庫訓練,光要建立這龐大且精準的訓練庫就不是短時間能完成的。最近,發現百度(Baidu)提供 中文 語音合成和語音辨識的服務,網站如下: AI開放平台 ,裡面不只有語音技術服務,還有其他技術。調用百度各項技術的SDK,建立網路連結後,連上AI開放平台,便能取得合成的結果或者辨識的結果。另外,SDK也有提供各種程式語法的範例,如:Java、C++、C#、Python、Node.js ... 等等,以滿足各類程式開發者的需求。底下我以Python語法為例,開發一個中文語音合成+語音辨識的測試程式。 合成技術的開發         在語音合成的過程,我們輸入中文字,如果調用成功,百度平台會返回一個語音binary,這時我們再儲存成wave file或者mp3格式,然後撥放這個音檔。語音辨識的使用正好相反,我們必須提供一個wave file傳給百度平台,如果成功,它會返回辨識的結果。因此,在python開發時,我們需要能錄音和播放音檔的模組,稱為pyaudio,安裝這個模組的方式如下圖所示。安裝後,還需要安裝百度的模組,透過 pip 方式安裝,"pip install baidu-aip"。 圖一:安裝 pyaudio 模組         使用百度的開放平台之前,需要註冊一個百度帳號,然後在這帳號裡創建一個應用,如圖二所示,在這應用裡面我們可自行選擇想要載入的技術。下圖的MySpeechTest是我所創建的一個語音應用,這個應用選用了百度的語音合成和語音識別。一旦創建,在這個欄位上會出現三個參數:AppID、API Key和Secret Key數值,之後調用SDK,我們需要使用這三個參數。 圖二:註冊一個百度的應用連結         圖三是以python語法所開發的語音合成和語音識別,圖的右半邊為python源代碼,圖的左半邊為合成與測試辨識的結果,我分別將上傳百度並取得合成音檔所花費的時間記錄下來,還有上傳音檔並且辨識過程需要花多少

[筆記] Raspberry Pi 樹莓派的 I/O 介面開發 in Python

圖片
         前面文章 使用C語言控制樹莓派的周邊介面,需要安裝WringPi的介面函式庫。同樣地,使用Python語言也需要一套介面函式庫,稱為 smbus 。樹莓派上的介面,如:I2C、SPI...必須借用smbus函式庫接口來控制這些通訊介面,參考底下的連結,有詳細的說明與使用。 RPi.GPIO Library Raspberry Pi 硬體控制 Using I2C LCD on Raspberry Pi         樹莓派3B+上面的操作系統已經內建smbus函式庫了,當我把I2C LCM1602模組接上後,在命令列輸入sudo i2cdetect -y 1,工具便能搜尋到模組的位址在0x27,表示smbus已經成功在系統內了。接下來,繼續用Python來開發LCM模組的控制,如下圖所示。 圖一:LCM1602 in Python

[筆記] Raspberry Pi 樹莓派的 I/O 介面開發 in C

圖片
#  TFT LCD 顯示控制 (以 Arduino 和 Raspberry Pi 為例) #  Visual Studio 2019 遠端連接到 Raspberry Pi 的執行與除錯         雖然樹莓派3.0就像一台小型電腦,已經內建USB埠口和網路通訊,但是有些感測模組需要靠專屬的通訊介面才能連接,無法直接使用USB方式通訊。我們發現樹莓派板子上有一排針腳,上面提供電源(3.3V和5V)、GPIO、UART、I2C、SPI...等常用的通訊介面,以方便開發者連接其他模組,因此樹莓派也可視為類似微控制器的電腦。         這個介面上的程式開發如前 文章 所說,我們可以用C/C++語言或者內建的Python語言來設計,不過如果採用C語法來開發,那麼必須先下載一套函式庫,稱為 WiringPi ,它提供介面函數接口,讓我們方便操作控制這周邊的通訊介面。底下的連結提供詳細的下載 、 安裝 、重新編譯和使用 說明。 樹莓派周邊介面的函式庫 Wiring Pi 使用WiringPi 控制GPIO << LCM顯示的例子>>         從GitHub上面找一些樹莓派相關的開發程式,其中LCM1602是一個以I2C為通訊介面的LCM模組。我們下載這個範例程式到自己的樹莓派板子上測試,首先打開樹莓派I/O設定視窗,如圖一所示。圖中的I2C介面要設為啟用,這樣LCM模組才能正常運行。 圖一:樹莓派I/O介面開關         接下來,在Geany IDE創建一個新專案,把程式碼放到專案目錄裡,如圖二所示。程式測試的過程打算讓LCM螢幕每隔一秒顯示計數,並且將數值加一。另外,GPIO介面控制的LED燈號也會每秒閃爍一次。執行這個程式後,影片如下。         由於介面的控制都是調用wiringPi的函式庫,在編譯時,我們必須載入相關的library,否則會編譯錯誤。在編譯的參數設定,要加入 -lwiringPi -lwiringPiDev 這兩個外部函式庫。如果沒有找到這兩個函式庫 (wiringPi和wiringPiDev),代表下載了wiringPi源代碼卻沒有在這個樹莓派板子上重編wiringPi,只要參考網路連結的說明,重編後就會產生函式庫了。 圖二:LCM1602

[筆記] Raspberry Pi 樹莓派的軟體開發

圖片
前言         本文的實驗過程是以樹莓派 3B+ 為主,Python是樹莓派板子上的操作系統所提供的程式語言,並且板子上的I/O介面控制官方建議用Python語法開發。因此,在樹莓派上寫程式的第一首選當然是Python,我們可以使用系統上內建的 Python 3 IDLE 或 Thonny Python IDE 的整合開發套件。雖然它是推薦的語法,不過樹莓派系統也可以使用 C/C++ 語言來開發程式,而且也內建一套IDE套件。底下就用簡單的程式碼來試試看這些開發套件。 C/C++開發         樹莓派官方的系統提供一套IDE軟體開發套件,稱為 Geany 。它可以編輯C/C++/Java/Python...等語法,並且編譯組建成執行檔,在樹莓派這樣的操作環境下,這已經算不錯的官方IDE套件了。         首先,打開Geany之後,先在工具列上選擇"專案",並創建一個新專案。舉例來說,我想要測試C++輸出功能,於是創建一個名為TestCpp的專案。接下來,在工具列上選擇"檔案",並創建一個"開新檔案",它會讓我們選個範本,此時選Main.cxx。系統幫我們在專案目錄下建立一個C++檔案,有main function的範本,如下圖一所示。         第二步,在這個檔案裡開始寫些簡單的code,寫個Hello World吧!順便編譯與組建一下,看看有沒有成功。不過,我的專業裏頭總不能只有一個Main檔案走遍天下吧?還是需要有些其他檔案來組建。新增一個加法函數的檔案,名為myadd.cxx,存放在專案的目錄下,這時就可以從main函數調用這個外部加法函數,試試看!一開始編譯,發現會產生編譯失敗,這是因為組建的命令沒設定妥當,預設的命令是編譯單一檔案,這會兒需要編譯一堆檔案,所以要調整命令,如圖二所示。再次編譯後,成功了,可以執行看看結果。 圖一:Geany IDE C++ 軟體開發環境 圖二:修改組建的命令 Python開發         樹莓派官方的系統內建兩套IDE軟體開發套件,一套稱為 Python 3 IDLE ,另一套為 Thonny Python 。我分別用print簡單的程式測試兩個IDE開發環境,如下圖三所示為Python

[筆記] Raspberry Pi 樹莓派的入門筆記

圖片
(一) 安裝樹莓派的作業系統         本文的實驗過程是以樹莓派 3B+ 板子為主。一拿到樹莓派開發板,它好比一台自行組裝的電腦,不像品牌電腦已經幫你安裝好所有的系統,開啟電源就能進入作業系統。因此,我們第一件事就是幫它安裝作業系統,官網提供兩種方式,一種是NOOBS快速安裝(離線或網路安裝),開機後,有個選單讓我們自己選擇安裝哪種樹莓OS。另一種是映像檔燒錄到SD,這是已經確定要安裝Raspbian OS。至於安裝這部分的說明,網路已經有不少前輩分享其寶貴的經驗,不妨參考。 樹莓派 Raspberry Pi B+ 入門教學,以 NOOBS 安裝基本 Linux 系統 樹莓派 Raspberry Pi,無頭式(無螢幕、鍵盤與滑鼠),安裝到進入作業系統桌面 學習樹莓派 Raspberry Pi (二) 遠端登錄樹莓派         Raspbian OS安裝好了之後,我們希望能從遠端來操控樹莓派,這樣就可以不需要額外準備一套鍵盤、滑鼠、螢幕了。遠端登錄分成兩種:SSH 文字模式和 VNC 全螢幕模式,一般還是使用遠端全螢幕的操控方式,不過我們必須設定成每次開機自動啟動遠端登錄功能。網路也有不少前輩分享其寶貴的經驗,參考底下的連結。 Raspberry Pi:遠端桌面連線與VNC Raspberry Pi 筆記:遠端桌面 VNC、Teamviewer 及RDP Raspberry啟動SSH連線 (三) 樹莓派桌面中文化         已經可以從遠端連上樹莓派,但是 Raspbian OS 預設系統為英文版,我們要將桌面改為中文化,同時也把WiFi的地區改為台灣才能符合當地規格。另外,還要把螢幕解析度調整到適當的大小,才不會在遠端看到一個很小的畫面。 將樹莓派Raspberry Pi系統設定為中文 把你的 Raspberry Pi 變成中文介面、安裝中文輸入法 注意 : 每次修改了樹莓派設定,要重新開機才能生效,不像Windows系統有的設定可以直接生效。比如藍芽裝置、喇叭、或者網路,設定完畢後,必須reboot才生效。 (四) 開啟瀏覽器上網         到這個步驟,我們從遠端連線,再打開Raspbian內建的瀏覽器,上網試試看效果怎樣,順便到Youtube測試影音撥放的效能。