調用百度地圖API與語音API實現簡易地圖語音導航

註冊成爲百度開發者,申請百度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()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章