1. 程式人生 > >人工智能 之 語音

人工智能 之 語音

def 文件 bin 解壓 sys Coding mp3 pcm -i

以下技術均依靠於百度大佬提供的接口操作!調用接口語言為python

一,下載

pip install baidu-aip

二,語音合成

根據百度語言合成官網,調用即可:

#!/usr/bin/env python
# -*- coding:utf8 -*-


from aip import AipSpeech

""" 你的 APPID AK SK """  # 註冊百度賬號之後,創建一個應用,即可獲得這些數據
APP_ID = "14446029"  
API_KEY = "fErCt9KmoKuGDpBZqDQhQB7v"
SECRET_KEY = EXTb37xV1lubXB8D5fzZnlljLHnC7VMx
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) text = "你叫啥呀" res = client.synthesis(text, options={ "vol": 8, # "pit": 6, "spd": 5, "per": 4 }) if not isinstance(res, dict): with open(audio.mp3, wb) as f: f.write(res)

配置參數詳見:http://ai.baidu.com/docs/#/TTS-Online-Python-SDK/top

這樣我們生成的’audio‘.mp3文件就是識別後的語言!

三,語言識別

目前百度支持的語言格式:原始 PCM 的錄音參數必須符合 8k/16k 采樣率、16bit 位深、單聲道,支持的格式有:pcm(不壓縮)、wav(不壓縮,pcm編碼)、amr(壓縮格式)(百度自己說的);

其實,百度能準確的識別的語音格式只有PCM!!!

那麽我們就需要把我們的語音格式轉換為PCM格式!使用下面這個工具可以完成音頻任意裝換格式!

FFmpeg 系統工具 : https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg 密碼:w6hk

下載之後,解壓,然後配置環境變量,就可以使用了!使用命令看下面代碼!

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import os
from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = "14446029"
API_KEY = "fErCt9KmoKuGDpBZqDQhQB7v"
SECRET_KEY = EXTb37xV1lubXB8D5fzZnlljLHnC7VMx

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)


def get_file_content(file_path):
    cmd_str = f"ffmpeg -y -i {file_path} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {file_path}.pcm"  # 用於轉換我們的語音格式
    os.system(cmd_str)
    with open(f"{file_path}.pcm", rb) as fp:
        return fp.read()


res = client.asr(speech=get_file_content("2.m4a"), options={
    "dev_pid": 1536,
})

print(res)
print(res.get("result")[0])

參數配置詳見 : http://ai.baidu.com/docs/#/ASR-Online-Python-SDK/top

四,自然語言處理(NLP)

詳見: http://ai.baidu.com/docs/#/NLP-Python-SDK/top

from aip import AipNlp


""" 你的 APPID AK SK """
APP_ID = "14446029"
API_KEY = "fErCt9KmoKuGDpBZqDQhQB7v"
SECRET_KEY = EXTb37xV1lubXB8D5fzZnlljLHnC7VMx


nip_client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

def nip_handle(text):
    if nip_client.simnet("你叫什麽名字", text).get("score") >= 0.72:  # 用於返回兩個文本的相似度,大於72%既可以認為,2個意思基本相同!
        return "我的名字叫你的小可愛呀"
    return goto_tuling(text, "xipangzi")

人工智能 之 語音