本節內容 預備資料:
1.FFmpeg:
鏈接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg
密碼:w6hk
2.baidu-aip:
pip install baidu-aip
終於進入主題了,此篇是人工智能應用的重點,只用現成的技術不做底層算法,也是讓初級程序員快速進入人工智能行業的捷徑
目前市面上主流的AI技術提供公司有很多,比如百度,阿里,騰訊,主做語音的科大訊飛,做只能問答的圖靈機器人等等
這些公司投入了很大一部分財力物力人力將底層封裝,提供應用接口給我們,尤其是百度,完全免費的接口
既然百度這么仗義,咱們就不要浪費掉怎么好的資源,從百度AI入手,開啟人工智能之旅
開啟人工智能技術的大門 : http://ai.baidu.com/
看看我大百度的AI大法,這些技術全部都是封裝好的接口,看着就爽
接下來咱們就一步一步的操作一下
首先進入控制台,注冊一個百度的賬號(百度賬號通用)
開通一下我們百度AI開放平台的授權
然后找到已開通服務中的百度語音
走到這里,想必已經知道咱們要從語音入手了,語音識別和語音合成
打開百度語音,進入語音應用管理界面,創建一個新的應用
創建語音應用App
就可以創建應用了,回到應用列表我們可以看到已創建的應用了
這里面有三個值 AppID , API Key , Secret Key 記住可以從這里面看到 , 在之后的學習中我們會用到
好了 百度語音的應用已經創建完成了 接下來 我會用Python 代碼作為實例進行應用及講解
一.安裝百度的人工智能SDK:
首先咱們要 pip install baidu-aip 安裝一個百度人工智能開放平台的Python SDK實在是太方便了,這也是為什么我們選擇百度人工智能的最大原因
安裝完成之后就來測試一下:
在工程目錄下,就可以看到 s1.mp3 這個文件了,來聽一聽
上面咱們測試了一個語音合成的例子,那么就從語音合成開始入手
二.語音合成:
技術上,代碼上任何的疑惑,都可以從官方文檔中得到答案
baidu-aip Python SDK 語音合成技術文檔 : https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top
剛才我們做了一個語音合成的例子,就用這個例子來展開說明
先來看第一段代碼
這是與百度進行一次加密校驗 , 認證你是合法用戶 合法的應用
AipSpeech 是百度語音的客戶端 認證成功之后,客戶端將被開啟,這里的client 就是已經開啟的百度語音的客戶端了
再來看第二段代碼:
用百度語音客戶端中的synthesis方法,並提供相關參數
成功可以得到音頻文件,失敗則返回一段錯誤信息
重點看一下 synthesis 這個方法 , 從 https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top 來獲得答案吧
從參數入手分析:
按照這些參數,從新發起一個語音合成
這次聲音是不是與一點點蘿莉了呢?
這都是語音語調的作用 0 - 9 其實就是 御姐音 - 蘿莉音
這就是人工智能中的語音合成技術,調用百度的SDK,只用了5分鍾,完成了1年的開發量,哈哈哈哈
一定要自己練習一下語音合成, 別把它玩兒壞了
三.語音識別:
哎,每次到這里,我都默默無語淚兩行,聲音這個東西格式太多樣化了,如果要想讓百度的SDK識別咱們的音頻文件,就要想辦法轉變成百度SDK可以識別的格式PCM
目前DragonFire已知可以實現自動化轉換格式並且屢試不爽的工具 : FFmpeg 這個工具的下載地址是 : 鏈接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg 密碼:w6hk
FFmpeg 環境變量配置:
首先你要解壓縮,然后找到bin目錄,我的目錄是 C:\ffmpeg\bin
然后 以 windows 10 為例,配置環境變量
如果沒搞明白的話,我也沒有辦法了,這么清晰這么明白
嘗試一下,是否配置成功
看到這個界面就算配置成功了,配置成功有什么用呢, 這個工具可以將wav wma mp3 等音頻文件轉換為 pcm 無壓縮音頻文件
做一個測試,首先要打開windows的錄音機,錄制一段音頻(說普通話)
現在假設錄制的音頻文件的名字為 audio.wav 放置在 D:\DragonFireAudio\
然后我們用命令行對這個 audio.wav 進行pcm格式的轉換然后得到 audio.pcm
命令是 : ffmpeg -y -i audio.wav -acodec pcm_s16le -f s16le -ac 1 -ar 16000 audio.pcm
然后打開目錄就可以看到pcm文件了
pcm文件已經得到了,趕緊進入正題吧
百度語音識別SDK的應用:
前提是你的audio.pcm 要與你當前的文件在同一個目錄,還是分段看一下代碼
讀取文件的內容,file_context 是 audio.pcm 文件打開的二進制流
asr函數需要四個參數,第四個參數可以忽略,自有默認值,參照一下這些參數是做什么的
第一個參數: speech 音頻文件流 建立包含語音內容的Buffer對象, 語音文件的格式,pcm 或者 wav 或者 amr。(雖說支持這么多格式,但是只有pcm的支持是最好的)
第二個參數: format 文件的格式,包括pcm(不壓縮)、wav、amr (雖說支持這么多格式,但是只有pcm的支持是最好的)
第三個參數: rate 音頻文件采樣率 如果使用剛剛的FFmpeg的命令轉換的,你的pcm文件就是16000
第四個參數: dev_pid 音頻文件語言id 默認1537(普通話 輸入法模型)
再來看下一段代碼,打印返回結果:
成功的dict中 result 就是我們要的識別文本
失敗的dict中 err_no 就是我們要的錯誤編碼,錯誤編碼代表什么呢?
如果err_no不是0的話,就參照一下錯誤碼表
到此百度AI語音部分的調用就結束了,是不是感覺很簡單
剛剛學完練習一下:
1.嘗試從語音識別中拿出result對應的中文
2.嘗試你說一句話,然后讓百度AI學你說話
3.嘗試使用對話的方式,得到你叫什么名字,你今年幾歲了,這樣簡單問題的答案