0. 太長不看系列,直接使用
在1.2官網注冊后拿到APISecret和APIKey,直接復制文章2.4demo代碼,保存為online_tts.py,在命令行執行
python online_tts.py -client_secret=你的client_secret -client_id=你的client_id -file_save_path=test.wav --text=今天天氣不錯
使用中有任何問題,歡迎留言提問。
1. Python調用標貝科技語音合成接口,實現文字轉語音
1.1 環境准備:
Python 3
1.2 獲取權限
標貝科技 https://ai.data-baker.com/#/index
填寫邀請碼fwwqgs,每日免費調用量還可以翻倍
1.2.1 登錄
點擊產品地址進行登錄,支持短信、密碼、微信三種方式登錄。
1.2.2 創建新應用
登錄后進入【首頁概覽】,各位開發者可以進行創建多個應用。包括一句話識別、長語音識別、錄音文件識別;在線合成、離線合成、長文本合成。
1.2.3 選擇服務
進入【已創建的應用】,左側選擇您需調用的AI技術服務,右側展示對應服務頁面概覽(您可查詢用量、管理套餐、購買服務量、自主獲取授權、預警管理)。
1.2.4 獲取Key&Secret
通過服務 / 授權管理,獲取對應參數,進行開發配置(獲取訪問令牌token)
拿到Key和Secret就可以正式使用啦!
2. 代碼實現
2.1 獲取access_token
在拿到Key和Secret后,我們還需要調用授權接口獲取access_token,這個access_token有效時長是24小時。
# 獲取access_token用於鑒權
def get_access_token(client_secret, client_id):
grant_type = "client_credentials"
url = "https://openapi.data-baker.com/oauth/2.0/token?grant_type={}&client_secret={}&client_id={}".format(grant_type, client_secret, client_id)
response = requests.post(url)
access_token = json.loads(response.text).get('access_token')
return access_token
2.2 獲取轉換后音頻
拿到access_token后,調用語音合成接口,就可以獲得生成的音頻
# 獲取轉換后音頻
def get_audio(data):
url = "https://openapi.data-baker.com/tts?access_token={}&domain={}&language={}&voice_name={}&text={}&audiotype={}".format(data['access_domain'], data['domain'], data['language'], data['voice_name'], data['text'], data['audiotype'])
response = requests.post(url)
content_type = response.headers['Content-Type']
if 'audio' not in content_type:
raise Exception(response.text)
return response.content
2.3 配置接口參數
client_secret和client_id:在文章1.2的官網獲取,必填
file_save_path:文件保存路徑,必填
text:需要轉換的文本內容
audiotype:音頻類型,默認16K采樣率wav格式
domain:所屬領域,默認1
language:合成后文本語言,默認中文“zh"
voice_name:發音人選擇,默認“Lingling",其他發音人詳見https://www.data-baker.com/#/specs/file/tts_voice_list
# 獲取命令行輸入參數
def get_args():
text = '歡迎使用標貝開發平台。'
parser = argparse.ArgumentParser(description='ASR')
parser.add_argument('-client_secret', type=str, required=True)
parser.add_argument('-client_id', type=str, required=True)
parser.add_argument('-file_save_path', type=str, required=True)
parser.add_argument('--text', type=str, default=text)
parser.add_argument('--audiotype', type=str, default='6')
parser.add_argument('--domain', type=str, default='1')
parser.add_argument('--language', type=str, default='zh')
parser.add_argument('--voice_name', type=str, default='Lingling')
args = parser.parse_args()
return args
2.4 完整demo
#!/usr/bin/env python
# coding: utf-8
import requests
import json
import argparse
# 獲取access_token用於鑒權
def get_access_token(client_secret, client_id):
grant_type = "client_credentials"
url = "https://openapi.data-baker.com/oauth/2.0/token?grant_type={}&client_secret={}&client_id={}".format(grant_type, client_secret, client_id)
response = requests.post(url)
access_token = json.loads(response.text).get('access_token')
return access_token
# 獲取轉換后音頻
def get_audio(data):
url = "https://openapi.data-baker.com/tts?access_token={}&domain={}&language={}&voice_name={}&text={}&audiotype={}".format(data['access_domain'], data['domain'], data['language'], data['voice_name'], data['text'], data['audiotype'])
response = requests.post(url)
content_type = response.headers['Content-Type']
if 'audio' not in content_type:
raise Exception(response.text)
return response.content
# 獲取命令行輸入參數
def get_args():
text = '歡迎使用標貝開發平台。'
parser = argparse.ArgumentParser(description='ASR')
parser.add_argument('-client_secret', type=str, required=True)
parser.add_argument('-client_id', type=str, required=True)
parser.add_argument('-file_save_path', type=str, required=True)
parser.add_argument('--text', type=str, default=text)
parser.add_argument('--audiotype', type=str, default='6')
parser.add_argument('--domain', type=str, default='1')
parser.add_argument('--language', type=str, default='zh')
parser.add_argument('--voice_name', type=str, default='Lingling')
args = parser.parse_args()
return args
if __name__ == '__main__':
try:
args = get_args()
# 獲取access_token
client_secret = args.client_secret
client_id = args.client_id
access_token = get_access_token(client_secret, client_id)
# 讀取參數
audiotype = args.audiotype
domain = args.domain
language = args.language
voice_name = args.voice_name
text = args.text
data = {'access_domain': access_token, 'audiotype': audiotype, 'domain': domain, 'language': language,
'voice_name': voice_name, 'text': text}
content = get_audio(data)
#保存音頻文件
with open('test.wav', 'wb') as audio:
audio.write(content)
print("task finished successfully")
except Exception as e:
print(e)
2.5 執行
復制所有代碼,保存為online_tts.py,在命令行執行
python online_tts.py -client_secret=你的client_secret -client_id=你的client_id -file_save_path=test.wav --text=今天天氣不錯
填寫邀請碼fwwqgs,每日免費調用量還可以翻倍