是不是看到標題感覺很高大上?其實就是人工智障啦hhh~,本篇文檔是典型的標題黨,雖然是人工智能,但是沒有算法,只是站在巨人的肩膀上而已。
好了,步入正題。此篇是人工智能應用的重點,只用現成的技術不做底層算法,也是讓初級程序員快速進入人工智能行業的捷徑。目前市面上主流的AI技術提供公司有很多,比如百度,阿里,騰訊,主做語音的科大訊飛,做只能問答的圖靈機器人等等。。。這些公司投入了很大一部分財力物力人力將底層封裝,提供應用接口給我們,尤其是百度,完全免費的接口。既然百度這么仗義,咱們就不要浪費掉怎么好的資源,從百度AI入手,開啟人工智能之旅。
一、開啟人工智能大門
創建一個百度語音的應用
首先需要登錄百度雲,接着進入我的控制台,打開百度語音,進入語音應用管理界面,創建一個新的應用



接着就能看到自己創建的應用啦

這里面有三個值 AppID , API Key , Secret Key 記住可以從這里面看到 , 在之后的學習中我們會用到
好了 百度語音的應用已經創建完成了 接下來 我會用Python 代碼作為實例進行應用及講解
安裝百度的人工智能SDK
- 首先咱們要 pip install baidu-aip 安裝一個百度人工智能開放平台的Python SDK實在是太方便了,這也是為什么我們選擇百度人工智能的最大原因
語音合成
-
安裝好后我們先來測試下,語音合成功能。
-
具體參數,不詳盡之處請看官方文檔:傳送門
- 這一步會生成一個名字為audio.m4a的文件
from aip import AipSpeech import os APP_ID = '11711274' API_KEY = 'iL6rNZgPjplCGYQfw86zO2ro' SECRET_KEY = '0YNfOLiAPUgqCL4XxYVoO2oLV37pmByY' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) result = client.synthesis('你好啊', 'zh', 1, { "spd": 4, 'vol': 8, "pit": 6, "per": 0, }) # 識別正確返回語音二進制 錯誤則返回dict 參照下面錯誤碼 if not isinstance(result, dict): with open('audio.m4a', 'wb') as f: f.write(result) else: print(result)
二、語音識別
安裝音頻轉換工具FFmpeg
-
聲音這個東西格式太多樣化了,如果要想讓百度的SDK識別咱們的音頻文件,就要想辦法轉變成百度SDK可以識別的格式PCM。
-
這里我們選擇的是FFmpeg ,下載好后配置好環境變量。
- 即可在CMD中使用
ffmpeg -y -i audio.m4a -acodec pcm_s16le -f s16le -ac 1 -ar 16000 audio.pcm

- 接着在文件夾中就可以看到pcm格式的文件了

百度語音識別SDK應用
-
好了准備工作都做好了就開始到正式接觸人工智障了
- asr函數需要四個參數,第四個參數可以忽略,自有默認值,參照一下這些參數是做什么的
-
第一個參數: speech 音頻文件流 建立包含語音內容的Buffer對象, 語音文件的格式,pcm 或者 wav 或者 amr。(雖說支持這么多格式,但是只有pcm的支持是最好的) 第二個參數: format 文件的格式,包括pcm(不壓縮)、wav、amr (雖說支持這么多格式,但是只有pcm的支持是最好的) 第三個參數: rate 音頻文件采樣率 如果使用剛剛的FFmpeg的命令轉換的,你的pcm文件就是16000 第四個參數: dev_pid 音頻文件語言id 默認1537(普通話 輸入法模型) 
from aip import AipSpeech import os APP_ID = '11711274' API_KEY = 'iL6rNZgPjplCGYQfw86zO2ro' SECRET_KEY = '0YNfOLiAPUgqCL4XxYVoO2oLV37pmByY' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) def get_file_content(filePath): with open(filePath, 'rb') as fp: return fp.read() # 識別本地文件 res = client.asr(get_file_content('audio.pcm'), 'pcm', 16000,{ 'dev_pid': 1536, }) print( res.get("result")[0] )
- 接着來看看返回值

成功的dict中 result 就是我們要的識別文本
失敗的dict中 err_no 就是我們要的錯誤編碼,錯誤編碼代表什么呢?

如果err_no不是0的話,就參照一下錯誤碼表
到此百度AI語音部分的調用就結束了,是不是感覺很簡單。
