人工智能 - 語音合成,語音識別,語音聊天機器人


人工智能 - 語音合成,語音識別,語音聊天機器人

現成的AI算法平台http://ai.baidu.com/

語音合成

根據百度大佬提供的文檔,作出以下小栗子:
1.下載

pip install baidu-aip 

2.代碼

	from aip import AipSpeech
	
	""" 你的 APPID AK SK 
	    控制台 -> 百度語音-> 創建或管理應用
	"""
	APP_ID = '15837844'
	API_KEY = '411VNGbuZVbDNZU78LqTzfsV'
	SECRET_KEY = '84AnwR2NARGMqnC6WFnzqQL9WWdWh5bW'
	
	client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)  # 實例化
	
	
	def text2audio(text):
	    """一些參數的配置,詳見文檔"""
	    result = client.synthesis(text, 'zh', 1, {
	        'vol': 5,
	        'per': 4,
	        'spd': 4,
	        'pit': 7,
	    })
	
	    # 識別正確返回語音二進制 錯誤則返回dict 參照下面錯誤碼
	    if not isinstance(result, dict):
	        print(result)
	        with open('audio.mp3', 'wb') as f:
	            f.write(result)

語音識別

1.下載 ffmpeg 用於將語音文件轉換為pcm格式

鏈接: https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg

密碼: w6hk

  1. pip pip install baidu-aip

3.代碼

	from aip import AipSpeech
	import os
	
	""" 你的 APPID AK SK """
	APP_ID = '15837844'
	API_KEY = '411VNGbuZVbDNZU78LqTzfsV'
	SECRET_KEY = '84AnwR2NARGMqnC6WFnzqQL9WWdWh5bW'
	
	client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
	
	
	# 讀取文件
	def get_file_content(filePath):
	    os.system(f"ffmpeg -y  -i {filePath}  -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm")  # 使用ffmpeg轉換格式
	    with open(f"{filePath}.pcm", 'rb') as fp:
	        return fp.read()
	
	
	# 識別本地文件
	res = client.asr(get_file_content('wyn.wav'), 'pcm', 16000, {
	    'dev_pid': 1536,
	})
	
	
	print(res.get("result")[0])
	
	
	# if res.get("result")[0] == "你叫什么名字":
	#     text2audio("我叫銀王八")

語音聊天機器人

1.為了更快捷的開發, 我們可以調用福林機器人的API

http://www.tuling123.com/

在福林機器人里自定義機器人部分功能.

2.代碼

	from aip import AipSpeech
	from aip import AipNlp  # 自然語言處理,詞義相似度
	import os
	
	""" 你的 APPID AK SK """
	APP_ID = '15837844'
	API_KEY = '411VNGbuZVbDNZU78LqTzfsV'
	SECRET_KEY = '84AnwR2NARGMqnC6WFnzqQL9WWdWh5bW'
	
	client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
	nlp_client = AipNlp(APP_ID, API_KEY, SECRET_KEY)  # 實例化詞義相似度對象
	
	"""查詢文件"""
	def get_file_content(filePath):
	    os.system(f"ffmpeg -y  -i {filePath}  -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm")
	    with open(f"{filePath}.pcm", 'rb') as fp:
	        return fp.read()
	
	
	"""識別本地文件"""
	res = client.asr(get_file_content('jgxh.wma'), 'pcm', 16000, {
	    'dev_pid': 1536,
	})
	text = res.get("result")[0]
	
	"""福林機器人智能回答函數"""
	import requests
	
	
	def to_tuling(text, uid):
	    data = {
	        "perception": {
	            "inputText": {
	                "text": "北京"
	            }
	        },
	        "userInfo": {
	            "apiKey": "a4c4a668c9f94d0c928544f95a3c44fb",
	            "userId": "123"
	        }
	    }
	    data["perception"]["inputText"]["text"] = text
	    data["userInfo"]["userId"] = uid
	    res = requests.post("http://openapi.tuling123.com/openapi/api/v2", json=data)
	    # print(res.content)
	    res_json = res.json()
	
	    text = res_json.get("results")[0].get("values").get("text")
	    print(text)
	    return text
	
	
	"""語音相似度判斷函數"""
	def my_nlp(text):
	    if nlp_client.simnet(text, "你叫什么名字").get("score") >= 0.75:
	        A = "我叫如花"
	        return A
	
	    if nlp_client.simnet(text, "你今年幾歲了").get("score") >= 0.75:
	        A = "我今年999歲了"
	        return A
	    
	    A = to_tuling(text, "open123")  # 如果不符合自定義條件,那么調用福林機器人API
	    return A
	
	"""開始執行"""
	A = my_nlp(text)
	result = client.synthesis(A, 'zh', 1, {
	    'vol': 5,
	    'per': 4,
	    'spd': 4,
	    'pit': 7,
	})
	
	# 識別正確返回語音二進制 錯誤則返回dict 參照下面錯誤碼
	if not isinstance(result, dict):
	    # print(result)
	    with open('audio.mp3', 'wb') as f:
	        f.write(result)
	
	"""自動執行audio.mp3, 打開軟件為默認打開軟件"""
	os.system('audio.mp3')


免責聲明!

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



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