Skip to main content

搭建AI文本转语音服务

SmartDeng...About 4 minNLPNLPSpeech

搭建AI文本转语音服务

最近看到太多"这个男人叫小帅"的配音视频,有点审美疲劳了,球球你们换个有感情的AI配音吧。 用了下微软跟Google的文本转语音服务,对比了下,微软的效果强太多了,AI风格有很多,并且多数感情丰富,还支持多种方言配音。最关键的是,每个月有50万字符的免费使用额度。 这还不赶紧用起来。

首先上官网链接:VoiceGalleryopen in new window, 你可以在这里试用各种风格的配音。先在Language中,选择你要的语言,可以把中文都勾选上,这里是我收藏的几个配音,比如这个yunze,你可以试听一下,就是纪录片风格的配音。

准备

你需要先注册一个微软帐号,然后开通微软的azure服务,可以到官网进行注册:Microsoft Azureopen in new window,我是注册的国际区的,不是中国区。 中国区的我不清楚,你可以自行研究。

注册完之后,就可以到前面VoiceGallery的链接中,试用下这些语音。其实代码很简单,你可以看到上面VoiceGallery中,选了一个配音,右边播放旁边,还有个Sample Code,复制Python代码你就可以运行起来了。或者在他这个页面的下方也可以直接在网页端使用。但是你需要先按照下面的步骤,开通该服务,并得到服务的访问Key

开通Speech services服务

来到你的portal首页:Microsoft Portalopen in new window 点击搜索,输入speech,即可看到speech services,如下: 点击进去,如果你没有创建过,会显示空白,点击上面的create按钮,新建一个服务: 按照我截图的根据自己情况选择,定价层记得用F0,这是免费使用的,每个月限额,超出会停止使用,不会扣钱,其他层级会根据超出的情况按照付费标准从信用卡中扣除。

你可以到价格文档中,看到免费使用的额度,以及标准付费的收费标准, 我们待会要使用的就是这个免费额度。

回到新建服务的页面,点击Next按钮,其他信息一路默认,然后Create即可。 新建完之后,回到Speech service的页面,可以看到刚才新建好的出现在这了,点击进去查看具体信息:

然后你就可以看到Key,region,Endpoint等信息,待会要用到:

使用文本转语音服务

记得一开头的VoiceGallery吗,回到那个地方,这时候你有两种使用方法,一种是直接在微软提供的网页端进行使用,另一种,如果你想要更方便的本地化部署,或者用脚本/代码运行,可以用官方提供的API服务,以及各种编程语言对应的SDK。

网页控制台使用

点击这个地方,可以使用微软提供的web端,直接导入文字进行语音合成,非常方便:

然后在控制台中,输入你想要生成语音的文本内容,点击上方的播放按钮,稍等片刻,就会返回结果,并且自动开始播放语音,可以将文件保存到本地,就完成了文本转语音的任务。如下:

是不是非常简单。如果你想要使用其他风格,在这个页面也可以非常方便的切换。

API调用方式

微软提供了API的调用方式,也给各种编程语言封装了SDK,把这段代码复制下来,放在本地运行即可:

这里是官网的教程:Python QuickStartopen in new window

我稍微改了下,转完之后,将语音保存到本地文件:

import os
import azure.cognitiveservices.speech as speechsdk

input_text = "你好,我是麦克阿瑟"
# This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('SPEECH_KEY'), region=os.environ.get('SPEECH_REGION'))
# audio_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True)
audio_config = speechsdk.audio.AudioOutputConfig(filename='output.wav')

# The language of the voice that speaks.
speech_config.speech_synthesis_voice_name='zh-CN-YunzeNeural'

speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=audio_config)

text = input_text

speech_synthesis_result = speech_synthesizer.speak_text_async(text).get()

if speech_synthesis_result.reason == speechsdk.ResultReason.SynthesizingAudioCompleted:
    print("Speech synthesized for text [{}]".format(text))
elif speech_synthesis_result.reason == speechsdk.ResultReason.Canceled:
    cancellation_details = speech_synthesis_result.cancellation_details
    print("Speech synthesis canceled: {}".format(cancellation_details.reason))
    if cancellation_details.reason == speechsdk.CancellationReason.Error:
        if cancellation_details.error_details:
            print("Error details: {}".format(cancellation_details.error_details))
            print("Did you set the speech resource key and region values?")

经过测试,微软的这个配音,真的比小帅配音有感情多了,断句非常准。球球你们快去换个配音吧。

Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v3.1.3