前言
这里我们的初衷是剪辑视频的时候可以解说,但是不想用自己的语音怎么办,这时候就可以用python自动帮我们自动转换语音。
分析
这里开始我们相对百度的接口做一次分析,我们看到有请求的参数
往下看具体的参数
这里可以看到参数的传参,所以我们就可以写脚本了。
import requests
from pathlib import Path
from pygame import mixer
import argparse
from argparse import ArgumentParser
def get_tts(text: str, *, lan: str = 'zh', spd: int = 3, output: str = 'output.mp3', play: bool = False):
"""
:param text: 文本
:param lan: 语种
:param spd: 语速 1~N 从慢到快
:param output: 保存的mp三文件
:return:
"""
url = f'https://fanyi.baidu.com/gettts?lan={lan}&text={text}&spd={spd}&source=web'
file = Path(output).absolute()
with file.open('wb') as f:
f.write(requests.get(url).content)
if play:
palysound(file)
return file
def palysound(file):
"""
利用pygame播放音频
:param file:
:return:
"""
mixer.init()
mixer.music.load(str(file))
mixer.music.play()
while mixer.music.get_busy():
pass
mixer.music.stop()
def main():
parser = ArgumentParser(description='利用百度接口,实现文本转语音')
parser.add_argument('text', help='目标文本')
parser.add_argument('-s ', '--spd', default=3, type=int, help='语速,越大越快')
parser.add_argument('-o', '--output', default='output.mp3 ', help='保存mp3文件路径')
# parser.add_argument('--play', action='store_true', help='下载完成后立刻播放')
args = parser.parse_args()
get_tts(**dict(args._get_kwargs())) #获取多个参数
if __name__ == '__main__':
main()