Python之人工智能(一)


  是不是看到標題感覺很高大上?其實就是人工智障啦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語音部分的調用就結束了,是不是感覺很簡單。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM