赞
踩
提起语音克隆技术业内人人士估计都知道Real Time Voice Cloning,谷歌工程师的论文SV2TTS,由比利时列日大学的研究人员复现了该框架并开源了他们的实现。本来挺感兴趣的,试想如果能把亲人的语音克隆带在身边是多么美妙的事情,其实我也很想克隆我儿子的声音,毕竟他长得太快了,不过兴趣是兴趣,现实是现实,研究了几天由于内功不够深厚差点走火入魔,py学习时间仅有个把月的我还是暂时封印它吧。
但是SV2TTS太美妙了,比如TTS语料库惊人,类似清华公开的库动不动就十几个G,而SV2TTS只需要简单的几句话就可以克隆出不错的效果。标贝提供了这样的服务,所以体验了一下,感觉还不错,除了合成出来的语音有点机械化,但是出来的结果还是可圈可点的。
import requests,json import struct import pyaudio clientId="申请的ID" secret="申请的" def getToken(): # 24小时过期默认 url = "https://openapi.data-baker.com/oauth/2.0/token?grant_type=client_credentials&client_secret=" + secret + "&client_id=" + clientId answer = requests.get(url) data = json.loads(answer.text) return data['access_token'] """ test:文字 voice_name:模型id audiotype=3 :返回16K采样率的mp3格式 audiotype=4 :返回16K采样率的pcm格式 audiotype=5 :返回8K采样率的pcm格式 audiotype=6 :返回16K采样率的wav格式 audiotype=6&rate=1 :返回8K的wav格式 audiotype=7 :返回8k8bit的alaw格式文件 audiotype=8 :返回8k8bit的ulaw格式文件 audiotype=9 返回8K采样率的mp3 忽略file_name直接播放 """ def zhtts(text,voice_name,file_name="",audiotype="6"): token=getToken() # domain为固定值1 url="https://openapi.data-baker.com/tts_hot_load?" \ "access_token="+token+"&domain=1&text="+text+"&voice_name="+voice_name+"&language=zh"+"&audiotype="+audiotype answer = requests.get(url) res=answer.content if(len(file_name)==0): p = pyaudio.PyAudio() stream = p.open(format=p.get_format_from_width(2), channels=1, rate=16000, output=True) stream.write(res) stream.stop_stream() # 暂停 stream.close() # 关闭 p.terminate() else: with open(file_name, "wb") as f: for x in res: s = struct.pack('B', x) # 转换为字节流字符串,B代表unsigned char f.write(s) zhtts("君不见,黄河之水天上来,奔流到海不复回。君不见,高堂明镜悲白发,朝如青丝暮成雪。","你申请的模板ID")
使用流程也很简单,申请个ID和SECRET->在APP上录制语音大概12段->上传等待训练结果->拿到模型ID->调用上面的代码
加油,希望我明年能有实力拿下它
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。