如何用腾讯云AI语音开一场讨论会?

准备工作

习惯性的一上来的就去看API文档,果然不出所料,对于所有TTS服务来说一定是有一大堆的参数选择,比如语速、音量、音色等等,对于有选择困难症的我来说,这个事真的很头大,想选择一个适合自己场景的声音真的太难了,尤其我还得选好几个声音,期望未来能够更智能吧。但腾讯云贴心的为我们准备了试听功能,免去了我不断修改参数,不断Run的烦恼。

(首页下方一点的试听界面)

嚯,试听覆盖的范围还是相当全面的,场景覆盖了通用、客服、外语、方言等,男女各类音色也是相当的齐全,基本不用自己调接口去做试听了。话不多说,直接开听,恍惚间也不知道听了多少种,最后选定了三种(因为在这场讨论会上有三个角色参加),采用“爱小柯-低沉慵懒小哥 中性情感 情感程度180% 语速+0.7 音量10”来作为本场主持人的音频,正方的人物设定是一个川妹子,所以选择方言里面的“智川-四川辣妹子”来作为本场讨论会的正方音频,反方的人物设定是一个大学男教授,所以选择阅读里面的“智靖-深情大叔”来作为本场讨论会的反方音频。

最难搞的部分搞定,接下来就是按照文档说明开始Gen。

语音合成

首先,进入语音合成工作台(https://console.cloud.tencent.com/tts)开通TTS功能。

然后,进入语音合成资源包界面(https://console.cloud.tencent.com/tts/resourcebundle)领取免费的资源包(800万字符,三个月内有效)。

最后,来到API Explorer测试一下接口是否可用:

(API Explorer测试界面)

正确返回了Audio,说明功能开通没有问题啦,如果报错,看看对应的错误信息。

功能没问题,咱们就可以开始Coding(Copy)了

Copy一下API Explorer中的代码,本人是Python环境,擅长使用SDK,所以先安装腾讯云python-sdk

代码语言:txt
复制
pip install tencentcloud-sdk-python

Copy后的代码,长这样:

代码语言:txt
复制
try:
    # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
    # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
    # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
    cred = credential.Credential("SecretId", "SecretKey")
    # 实例化一个http选项,可选的,没有特殊需求可以跳过
    httpProfile = HttpProfile()
    httpProfile.endpoint = "tts.tencentcloudapi.com"
# 实例化一个client选项,可选的,没有特殊需求可以跳过
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
# 实例化要请求产品的client对象,clientProfile是可选的
client = tts_client.TtsClient(cred, "ap-shanghai", clientProfile)

# 实例化一个请求对象,每个接口都会对应一个request对象
req = models.TextToVoiceRequest()
params = {
    "Text": "你好",
    "SessionId": "ss-1",
    "Volume": 10,
    "Speed": 2.1,
    "VoiceType": 301036,
    "EmotionCategory": "neutral",
    "EmotionIntensity": 180
}
req.from_json_string(json.dumps(params))

# 返回的resp是一个TextToVoiceResponse的实例,与请求对象对应
resp = client.TextToVoice(req)
# 输出json格式的字符串回包
print(resp.to_json_string())</code></pre></div></div><p>把SecretId和SecretKey替换成自己的值,Run就可以了。</p><p>返回的Audio值是一个base64编码的wav/mp3音频数据,所以我们代码稍作改动,输出到音频文件中,方便上传播放。</p><div class="rno-markdown-code"><div class="rno-markdown-code-toolbar"><div class="rno-markdown-code-toolbar-info"><div class="rno-markdown-code-toolbar-item is-type"><span class="is-m-hidden">代码语言:</span>txt</div></div><div class="rno-markdown-code-toolbar-opt"><div class="rno-markdown-code-toolbar-copy"><i class="icon-copy"></i><span class="is-m-hidden">复制</span></div></div></div><div class="developer-code-block"><pre class="prism-token token line-numbers language-txt"><code class="language-txt" style="margin-left:0">    resp = client.TextToVoice(req)
# 输出json格式的字符串回包
# print(resp.Audio)
file_path = &#34;output_audio.wav&#34;
audio_data = base64.b64decode(resp.Audio)
with open(file_path, &#39;wb&#39;) as file:
    file.write(audio_data)</code></pre></div></div><p>至此,音频合成任务就完成啦~</p><h2 id="de917" name="%E6%80%BB%E7%BB%93">总结</h2><p>总的来说,体验下来,提供的音色选择及其丰富,相比以前的TTS合成有很大的进步,但相比真人说话,不管是情感还是语气都还差些意思,尤其是没有抑扬顿挫的感觉。</p><p>最后,我想上传合成的音频,发现这边不支持,所以就只能做成视频放到最后啦~</p><p></p><figure class=""><span class="lazy-image-holder"></span><figcaption>(AI语音讨论会)</figcaption></figure>