-
大小: 3KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-05-14
- 語言: Python
- 標簽:
資源簡介
通過百度語音 API 實現(xiàn)文本轉(zhuǎn)語音

代碼片段和文件信息
#!/usr/bin/env?python
#?encoding:?utf-8
import?os
import?sys
import?click
import?requests
TOKEN_URL?=?‘https://openapi.baidu.com/oauth/2.0/token?grant_type={0}&client_id={1}&client_secret={2}‘
TEXT2AUDIO_URL?=?‘http://tsn.baidu.com/text2audio?tex={0}&lan=zh&cuid={1}&ctp=1&tok={2}&spd={3}&pit={4}&vol={5}&per={6}‘
GRANT_TYPE?=?‘client_credentials‘
CUID?=?‘pyandi_ffff‘
TTS_AK?=?‘‘
TTS_SK?=?‘‘
def?get_token():
????ak?sk?=?TTS_AK?TTS_SK
????if?‘TTS_AK‘?in?os.environ:
????????ak?=?os.environ[‘TTS_AK‘]
????if?‘TTS_SK‘?in?os.environ:
????????sk?=?os.environ[‘TTS_SK‘]
????url?=?TOKEN_URL.format(GRANT_TYPE?ak?sk)
????r?=?requests.post(url)
????if?r.status_code?==?200:
????????return?r.json()[‘a(chǎn)ccess_token‘]
????else:
????????print(r.json())
????????raise?Exception(‘Get?Token?Error!‘)
def?text2audio(text?spd=5?pit=5?vol=5?per=2):
????lst?=?[]
????tok?=?get_token()
????while?text:
????????_text?text?=?text[:1024]?text[1024:]
????????url?=?TEXT2AUDIO_URL.format(_text?CUID?tok?spd?pit?vol?per)
????????r?=?requests.post(url)
????????if?r.headers[‘Content-type‘]?==?‘a(chǎn)udio/mp3‘:
????????????lst.append(r.content)
????????else:
????????????print(r.json())
????????????raise?Exception(‘Text?to?audio?error!‘)
????return?b‘‘.join(lst)
@click.command()
@click.option(‘--text‘?‘-t‘?help=‘The?text?from?stdin.‘)
@click.option(‘--from_file‘?‘-f‘?help=‘The?text?from?file.‘)
@click.option(‘--result‘?‘-r‘?default=‘default.mp3‘?help=‘The?result?file.‘)
@click.option(‘--speedch/--no-speedch‘?default=False?help=‘Speedch?or?not.‘)
@click.option(‘--speedch_app‘?default=‘mpv‘?help=‘Speedch?app?e.g.?“mpv“.‘)
@click.option(‘--spd‘?default=5?help=‘The?speed.?[0-9]‘)
@click.option(‘--pit‘?default=5?help=‘The?pitch.?[0-9]‘)
@click.option(‘--vol‘?default=5?help=‘The?volume.?[0-9]‘)
@click.option(‘--per‘?default=2?help=‘The?person.?[0134]‘)
def?run(text?from_file?result?speedch?speedch_app?spd?pit?vol?per):
????if?text?is?None?and?from_file?is?None:
????????raise?Exception(“Please?give?a?option?text?or?from_file!“)
????if?text?is?None:
????????if?not?os.path.exists(from_file):
????????????raise?Exception(‘The?from?file?{0}?not?exists!‘.format(from_file))
????????text?=?open(from_file?‘r‘).read()
????audio?=?text2audio(text?spd?pit?vol?per)
????with?open(result?‘wb‘)?as?f:
????????f.write(audio)
????if?speedch:
????????os.system(‘{0}?{1}‘.format(speedch_app?result))
if?__name__?==?‘__main__‘:
????try:
????????run()
????except?Exception?as?ex:
????????print(ex)
????????raise
????????sys.exit(1)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-01-12?08:16??text2audio-master\
?????文件????????1050??2017-01-12?08:16??text2audio-master\.gitignore
?????文件????????1066??2017-01-12?08:16??text2audio-master\LICENSE
?????文件?????????459??2017-01-12?08:16??text2audio-master\README.md
?????文件????????2555??2017-01-12?08:16??text2audio-master\text2audio.py
評論
共有 條評論