MATLAB 文本转语音(TTS)

您所在的位置:网站首页 matlab语言翻译软件 MATLAB 文本转语音(TTS)

MATLAB 文本转语音(TTS)

2023-03-11 08:35| 来源: 网络整理| 查看: 265

分享用MATLAB通过微软在线语音服务实现文本转语音!

其中TTS(text-to-speech)服务用到了微软Azure的在线语音服务。

微软Azure语音服务是一种云端的人工智能服务,可以提供语音转文本、文本转语音、语音翻译和说话人辨识等功能。它支持多达119种语言和变体,包含超过270种语音,还能有不同的说话风格。

有制作视频需求的同学可以尝试下用来给字幕配音,挺有意思的,短视频的很多配音应该都是类似的AI配音。

可以直接在微软Azurede 网页上使用该项语音服务,完全免费,但无法下载生成的音频文件。

可以配合ffmpeg等软件录制音频生成音频文件;

这里主要是以MATLAB调用微软语音服务接口,将文本转换成音频数据,并写入音频文件中。

以下是实现这样一个MATLAB小程序的主要步骤:

1. 注册微软Azure账号

已经注册过Azure账号的同学可直接跳过这部分;

普通注册Azure需要支持VISA的信用卡,按照提示注册即可;

在校学生凭借学生邮箱注册,就不需要VISA的信用卡了;用现有的微软账号登录,会有一个学生邮箱验证的环节,提供学校edu邮箱,按提示操作即可;

2. 创建语音服务

登录Azure账号后,直接在首页搜索“语音服务”

点击进入“语音服务”界面,新建服务

随后创建资源组、实例等信息

创建成功后来到下面的界面,保存终结点,地区,密钥

至此,语音服务创建完毕,外部已经可以通过密钥等信息调用该文本转语音服务;

3. MATLAB调用语音服务核心代码

注意:替换自己的密钥apiKey 和地区region ,就能输出音频文件output.wav并使用麦克风播放该音频;

关于输出声音的参数主要由代码中ssml控制,语音合成标记语言 (SSML) 是一种基于 XML 的标记语言,可用于微调文本转语音输出属性,例如音调、发音、语速、音量等。 与纯文本输入相比,拥有更大的控制权和灵活性。

更多SSML参数可参考如下文档:

以下是MATLAB实现调用微软语音服务并输出到文件的核心代码:

text = '科学计算对性能一直有着最高的需求,但目前各领域的专家却大量使用较慢的动态语言来开展他们的日常工作。 偏爱动态语言有很多很好的理由,因此我们不会舍弃动态的特性。 幸运的是,现代编程语言设计与编译器技术可以大大消除性能折衷(trade-off),并提供有足够生产力的单一环境进行原型设计,而且能高效地部署性能密集型应用程序。 Julia 语言在这其中扮演了这样一个角色:它是一门灵活的动态语言,适合用于科学计算和数值计算,并且性能可与传统的静态类型语言媲美'; % 字数限制3000 %%请修改apiKey与对应自己设定的地区region,实例中地区为'eastasia' apiKey='替换为你自己的密钥'; region='eastasia'; % Azure中创建的服务时选择的地区 voice = 'zh-CN-XiaoxiaoNeural'; % 声音对象 audioFormat = 'audio-16khz-128kbitrate-mono-mp3';% 转换的音频格式 source_name='TTS-MATLAB' % 应用名,随便取一个就行 % 获取Token apiEndpoint = ['https://',region,'.api.cognitive.microsoft.com/sts/v1.0/issueToken']; options = weboptions('HeaderFields', {'Ocp-Apim-Subscription-Key', apiKey}); accessToken = char(webwrite(apiEndpoint, '', options))'; % ssml设置语音参数,此处为中文Xiaoxiao text = ['',text]; ssml = ['', ... '', text, '']; options = weboptions('HeaderFields', {'Content-Type', 'application/ssml+xml'; ... 'Authorization', ['Bearer ', accessToken]; ... 'X-Microsoft-OutputFormat', audioFormat; ... 'User-Agent', source_name}); request_url=['https://',region,'.tts.speech.microsoft.com/cognitiveservices/v1']; audioData = webwrite(request_url,ssml, options); % 输出到文件 audiowrite('output.wav', audioData, 16000) % 频率应与设定转换声音中格式一致16kHz % 使用麦克风播放 soundsc(audioData,16000)4. 创建一个APP

MATLAB App Designer 是一个比较简单的创建和设计应用程序的用户界面。同学们可以用它来设计一些简单的APP。具体的如何创建APP的过程这里没有详细展开,大家可以在B站上找到很多相关的教程视频;

这里使用MATLAB2022b生成一个简单的文本转语音APP界面如下:

APP源文件下载链接如下:TTS应用下载链接(点击下载)

需要注意的是,其中需要右键“文本转语音”按钮,打开对应的回调函数,替换自己的密钥和地区

以下是一个演示视频:

演示视频(由ffmpeg录制)https://www.zhihu.com/video/1616830209189101569

2023.03.08

MATLAB相关问题,欢迎各位同学一起交流讨论!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3