Python實現(xiàn)語音合成功能詳解
導(dǎo)語
今天就給大家?guī)韨€語言識別跟語言賺文字的小工具感興趣的鐵汁萌可以往下滑了
1.直接使用
在1.2官網(wǎng)注冊后拿到APISecret和APIKey,直接復(fù)制文章2.4demo代碼,保存為online_tts.py,在命令行執(zhí)行
python online_tts.py -client_secret=你的client_secret -client_id=你的client_id -file_save_path=test.wav --text=今天天氣不錯
2. 獲取權(quán)限
Python調(diào)用標(biāo)貝科技語音合成接口,實現(xiàn)文字轉(zhuǎn)語音
2.1 環(huán)境準(zhǔn)備:
Python 3
2.2 獲取權(quán)限
標(biāo)貝科技 https://ai.data-baker.com/#/?source=qwer12
2.2.1 登錄
點擊產(chǎn)品地址進(jìn)行登錄,支持短信、密碼、微信三種方式登錄。
2.2.2 創(chuàng)建新應(yīng)用
登錄后進(jìn)入【首頁概覽】,各位開發(fā)者可以進(jìn)行創(chuàng)建多個應(yīng)用。包括一句話識別、長語音識別、錄音文件識別;在線合成、離線合成、長文本合成。
2.2.3 選擇服務(wù)
進(jìn)入【已創(chuàng)建的應(yīng)用】,左側(cè)選擇您需調(diào)用的AI技術(shù)服務(wù),右側(cè)展示對應(yīng)服務(wù)頁面概覽(您可查詢用量、管理套餐、購買服務(wù)量、自主獲取授權(quán)、預(yù)警管理)。
2.2.4 獲取Key&Secret
通過服務(wù) / 授權(quán)管理,獲取對應(yīng)參數(shù),進(jìn)行開發(fā)配置(獲取訪問令牌可進(jìn)群咨詢)
拿到Key和Secret就可以正式使用啦!
3. 代碼實現(xiàn)
3.1 獲取access_token
在拿到Key和Secret后,我們還需要調(diào)用授權(quán)接口獲取access_token,這個access_token有效時長是24小時。
# 獲取access_token用于鑒權(quán) 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
3.2 獲取轉(zhuǎn)換后音頻
拿到access_token后,調(diào)用語音合成接口,就可以獲得生成的音頻
# 獲取轉(zhuǎn)換后音頻 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
3.3 配置接口參數(shù)
client_secret和client_id:在文章1.2的官網(wǎng)獲取,必填
file_save_path:文件保存路徑,必填
text:需要轉(zhuǎn)換的文本內(nèi)容
audiotype:音頻類型,默認(rèn)16K采樣率wav格式
domain:所屬領(lǐng)域,默認(rèn)1
language:合成后文本語言,默認(rèn)中文“zh"
voice_name:發(fā)音人選擇,默認(rèn)“Lingling",
其他發(fā)音人詳見
https://www.data-baker.com/#/specs/file/tts_voice_list
# 獲取命令行輸入?yún)?shù) def get_args(): text = '歡迎使用標(biāo)貝開發(fā)平臺。' 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
3.4 完整demo
#!/usr/bin/env python # coding: utf-8 import requests import json import argparse # 獲取access_token用于鑒權(quán) 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 # 獲取轉(zhuǎn)換后音頻 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 # 獲取命令行輸入?yún)?shù) def get_args(): text = '歡迎使用標(biāo)貝開發(fā)平臺。' 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) # 讀取參數(shù) 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)
3.5 執(zhí)行
復(fù)制所有代碼,保存為online_tts.py,在命令行執(zhí)行
python online_tts.py -client_secret=你的client_secret -client_id=你的client_id -file_save_path=test.wav --text=今天天氣不錯
以上就是Python實現(xiàn)語音合成功能詳解的詳細(xì)內(nèi)容,更多關(guān)于Python語音合成的資料請關(guān)注腳本之家其它相關(guān)文章!
- 關(guān)于Python調(diào)用百度語音合成SDK實現(xiàn)文字轉(zhuǎn)音頻的方法
- Python調(diào)用訊飛語音合成API接口來實現(xiàn)文字轉(zhuǎn)語音
- Python人工智能語音合成實現(xiàn)案例詳解
- Python語音合成的項目實戰(zhàn)(PyQt5+pyttsx3)
- 基于Python實現(xiàn)語音合成小工具
- 基于Python編寫一個語音合成系統(tǒng)
- python3實現(xiàn)語音轉(zhuǎn)文字(語音識別)和文字轉(zhuǎn)語音(語音合成)
- Python實現(xiàn)語音識別和語音合成功能
- python騰訊語音合成實現(xiàn)過程解析
- Python中edge-tts實現(xiàn)便捷語音合成
相關(guān)文章
用Python實現(xiàn)服務(wù)器中只重載被修改的進(jìn)程的方法
這篇文章主要介紹了用Python實現(xiàn)服務(wù)器中只重載被修改的進(jìn)程的方法,包括用watchdog來檢測文件的變化等,實現(xiàn)起來充分體現(xiàn)了Python作為動態(tài)語言的靈活性,強(qiáng)烈推薦!需要的朋友可以參考下2015-04-04