註冊成爲百度開發者,申請百度API的應用祕鑰
百度地圖開放平臺鏈接:http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5
百度AI開放平臺鏈接:https://ai.baidu.com/
調用百度API
地圖API:
輕量路徑規劃服務調用方法:http://api.map.baidu.com/directionlite/v1/walking?origin=40.01116,116.339303&destination=39.936404,116.452562&ak=您的AK //GET請求
其中:origin代表起點的經緯度座標,destination代表終點的經緯度座標,ak是你申請的應用的AK碼
語音API:
建立語音識別的python的SDK客戶端AipSpeech:
首先需要安裝百度AI的支持庫:
pip install baidu-aip
參考代碼如下:
from aip import AipSpeech
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
python實現簡單需求
調用百度地圖地點檢索服務獲取任意位置的經緯度座標
Getlnglat.py文件:
import json
from urllib.request import urlopen, quote
def getlnglat(address):
url = 'http://api.map.baidu.com/geocoder/v2/'
output = 'json'
ak = 'XbtjUyRm1jSCb1njXOmLxs8ibCN4I3v7' # 瀏覽器端密鑰
address = quote(address) # 由於本文地址變量爲中文,爲防止亂碼,先用quote進行編碼
uri = url + '?' + 'address=' + address + '&output=' + output + '&ak=' + ak
req = urlopen(uri)
res = req.read().decode()
temp = json.loads(res)
lat = temp['result']['location']['lat']
lng = temp['result']['location']['lng']
return lat, lng
調用百度AI語音服務實現將文本轉化爲語音,輸出爲MP3文件
TextToMp3.py文件:
from aip import AipSpeech
def TTM(text):
APP_ID = '16170864'#引號之間填寫之前在ai平臺上獲得的參數
API_KEY = 'SFERXsjoH7khGN30AGdbQiSG'#如上
SECRET_KEY = '5G1rdwEuNPbCTdtILWaTRl5mTyNUaPAL'#如上
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis(text, 'zh', 1, { 'vol': 8,'per':0,'spd':2 })
'''
固定值zh。語言選擇,目前只有中英文混合模式,填寫固定值zh
客戶端類型選擇,web端填寫固定值1
spd語速,取值0-15,默認爲5中語速(選填)
pit音調,取值0-15,默認爲5中語調(選填)
vol音量,取值0-15,默認爲5中音量(選填)
per發音人選擇, 0爲普通女聲,1爲普通男生,3爲情感合成-度逍遙,4爲情感合成-度丫丫,默認爲普通女聲
'''
#識別正確返回語音二進制 錯誤則返回dict 參照下面錯誤碼
if not isinstance(result, dict):
with open('test.mp3', 'wb') as f:
f.write(result)
簡易地圖語音導航的實現
使用python的pygame庫實現MP3的播放:
pip install pygame
輕量路徑規劃返回字段部分描述:
詳細描述請參考:http://lbsyun.baidu.com/index.php?title=webapi/directionlite-v1
實現路段描述語音導航需要獲取返回字段中的instruction字段,然後對其進行文本轉語音
BaiDuRoute.py文件:
import json
import re
from urllib.request import urlopen
from Getlnglat import getlnglat
from TextToMp3 import TTM
from pygame import mixer
import time
#獲取當前位置經緯度
A=getlnglat('重慶市沙坪壩欣陽廣場越界影院')
#獲取目的地經緯度
B=getlnglat('重慶市沙坪壩三峽廣場地鐵站')
#調用api的url
ak='XbtjUyRm1jSCb1njXOmLxs8ibCN4I3v7'
u1='http://api.map.baidu.com/directionlite/v1/walking?'
origin='origin='+str(A[0])+','+str(A[1])
destination='&destination='+str(B[0])+','+str(B[1])
AK='&ak='+ak
url=u1+origin+destination+AK
b = urlopen(url)
c=b.read()
result = json.loads(c)
#對instruction路段描述文本進行提取
S1=result['result']['routes'][0]
text1=S1['steps'][0]['instruction']
text=re.sub('[<>/b]','',text1)
#輸出方向
print(text)
#執行文本轉語音
TTM(text)
#播放MP3
mixer.init()
track=mixer.music.load('test.mp3')
mixer.music.play()
time.sleep(10)
mixer.music.stop()
mixer.quit()