含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入)

简介: 所谓文无第一,武无第二,云原生人工智能技术目前呈现三足鼎立的态势,微软,谷歌以及亚马逊三大巨头各擅胜场,不分伯仲,但目前微软Azure平台不仅仅只是一个PaaS平台,相比AWS,以及GAE,它应该是目前提供云计算人工智能服务最全面的一个平台,尤其是语音合成领域,论AI语音的平顺、自然以及拟真性,无平台能出其右。

所谓文无第一,武无第二,云原生人工智能技术目前呈现三足鼎立的态势,微软,谷歌以及亚马逊三大巨头各擅胜场,不分伯仲,但目前微软Azure平台不仅仅只是一个PaaS平台,相比AWS,以及GAE,它应该是目前提供云计算人工智能服务最全面的一个平台,尤其是语音合成领域,论AI语音的平顺、自然以及拟真性,无平台能出其右。

本次,我们通过Python3.10版本接入Azure平台语音合成接口,打造一款本地的TTS服务(文本转语音:Text To Speech)。

准备工作

首先根据Azure平台官方文档:https://learn.microsoft.com/zh-cn/azure/cognitive-services/speech-service/get-started-text-to-speech?tabs=macos%2Cterminal&pivots=programming-language-python

在平台上创建免费订阅服务:https://azure.microsoft.com/zh-cn/free/cognitive-services/

免费订阅成功后,进入资源创建环节,这里我们访问网址,创建免费的语音资源:https://portal.azure.com/#create/Microsoft.CognitiveServicesSpeechServices

这里注意订阅选择免费试用,使用区域选择东亚,如果在国外可以选择国外的对应区域。

创建语音服务资源成功后,转到资源组列表,点击获取资源秘钥:

需要注意的是,任何时候都不要将秘钥进行传播,或者将秘钥写入代码并且提交版本。

这里相对稳妥的方式是将秘钥写入本地系统的环境变量中。

Windows系统使用如下命令:

setx COGNITIVE_SERVICE_KEY 您的秘钥
AI 代码解读

Linux系统使用如下命令:

export COGNITIVE_SERVICE_KEY=您的秘钥
AI 代码解读

Mac系统的bash终端:

编辑 ~/.bash\_profile,然后添加环境变量

export COGNITIVE_SERVICE_KEY=您的秘钥
AI 代码解读

添加环境变量后,请从控制台窗口运行 source ~/.bash\_profile,使更改生效。

Mac系统的zsh终端:

编辑 ~/.zshrc,然后添加环境变量

export COGNITIVE_SERVICE_KEY=您的秘钥
AI 代码解读

如此,前期准备工作就完成了。

本地接入

确保本地Python环境版本3.10以上,然后安装Azure平台sdk:

pip3 install azure-cognitiveservices-speech
AI 代码解读

创建test.py文件:

`import azure.cognitiveservices.speech as speechsdk  
import os  
  
speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('KEY'), region="eastasia")``audio_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True)`
AI 代码解读

这里定义语音的配置文件,通过os模块将上文环境变量中的秘钥取出使用,region就是新建语音资源时选择的地区,audio\_config是选择当前计算机默认的音箱进行输出操作。

接着,根据官方文档的配置,选择一个语音机器人:https://learn.microsoft.com/zh-cn/azure/cognitive-services/speech-service/language-support?tabs=stt-tts#prebuilt-neural-voices

  
纯文本    wuu-CN-XiaotongNeural1(女)  
wuu-CN-YunzheNeural1(男)    不支持  
yue-CN    中文(粤语,简体)    yue-CN    纯文本    yue-CN-XiaoMinNeural1(女)  
yue-CN-YunSongNeural1(男)    不支持  
zh-CN    中文(普通话,简体)    zh-CN    音频 + 人工标记的脚本  
  
纯文本  
  
结构化文本  
  
短语列表    zh-CN-XiaochenNeural4、56(女)  
zh-CN-XiaohanNeural2、4、5、6(女)  
zh-CN-XiaomengNeural1、2、4、56(女)  
zh-CN-XiaomoNeural2、3、4、56(女)  
zh-CN-XiaoqiuNeural4、56(女)  
zh-CN-XiaoruiNeural2、4、5、6(女)  
zh-CN-XiaoshuangNeural2、4、5、68(女)  
zh-CN-XiaoxiaoNeural2、4、5、6(女)  
zh-CN-XiaoxuanNeural2、3、4、56(女)  
zh-CN-XiaoyanNeural4、56(女)  
zh-CN-XiaoyiNeural1、2、4、56(女)  
zh-CN-XiaoyouNeural4、5、6、8(女)  
zh-CN-XiaozhenNeural1、2、4、56(女)  
zh-CN-YunfengNeural1、2、4、56(男)  
zh-CN-YunhaoNeural1、2、4、56(男)  
zh-CN-YunjianNeural1、2、4、56(男)  
zh-CN-YunxiaNeural1、2、4、56(男)  
zh-CN-YunxiNeural2、3、4、56(男)  
zh-CN-YunyangNeural2、4、5、6(男)  
zh-CN-YunyeNeural2、3、4、56(男)  
zh-CN-YunzeNeural1、2、3、456(男)    神经网络定制声音专业版  
  
神经网络定制声音精简版(预览版)  
  
跨语言语音(预览版)  
zh-CN-henan    中文(中原河南普通话,中国大陆)    不支持    不支持    zh-CN-henan-YundengNeural1(男)    不支持  
zh-CN-liaoning    中文(东北普通话,中国大陆)    不支持    不支持    zh-CN-liaoning-XiaobeiNeural1(女)    不支持  
zh-CN-shaanxi    中文(中原陕西普通话,中国大陆)    不支持    不支持    zh-CN-shaanxi-XiaoniNeural1(女)    不支持  
zh-CN-shandong    中文(冀鲁普通话,中国大陆)    不支持    不支持    zh-CN-shandong-YunxiangNeural1(男)    不支持  
zh-CN-sichuan    中文(西南普通话,简体)    zh-CN-sichuan    纯文本    zh-CN-sichuan-YunxiNeural1(男)    不支持  
zh-HK    中文(粤语,繁体)    zh-HK    纯文本    zh-HK-HiuGaaiNeural4、56(女)  
zh-HK-HiuMaanNeural4、56(女)  
zh-HK-WanLungNeural1、4、5、6(男)    神经网络定制声音专业版  
zh-TW    中文(台湾普通话)    zh-TW    纯文本    zh-TW-HsiaoChenNeural4、56(女)  
zh-TW-HsiaoYuNeural4、56(女)  
zh-TW-YunJheNeural4、56(男)    神经网络定制声音专业版
AI 代码解读

单以中文语音论,可选择的范围还是相当广泛的。

继续编辑代码:

import azure.cognitiveservices.speech as speechsdk  
import os  
  
speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('KEY'), region="eastasia")  
audio_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True)  
  
speech_config.speech_synthesis_voice_name='zh-CN-XiaomoNeural'  
  
speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=audio_config)  
  
text = "hello 大家好,这里是人工智能AI机器人在说话"  
  
speech_synthesis_result = speech_synthesizer.speak_text_async(text).get()
AI 代码解读

这里我们选择zh-CN-XiaomoNeural作为默认AI语音,并且将text文本变量中的内容通过音箱进行输出。

如果愿意,我们也可以将语音输出为实体文件进行存储:



import azure.cognitiveservices.speech as speechsdk  
import os  
  
speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('KEY'), region="eastasia")  
audio_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True)

file_config = speechsdk.audio.AudioOutputConfig(filename="./output.wav")  
  
  
speech_config.speech_synthesis_voice_name='zh-CN-XiaomoNeural'  
  
speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=file_config)  
  
text = "hello 大家好,这里是人工智能AI机器人在说话"  
  
speech_synthesis_result = speech_synthesizer.speak_text_async(text).get()
AI 代码解读

这里指定file\_config配置为脚本相对路径下的output.wav文件:

ls  
output.wav
AI 代码解读

如此,音频文件就可以被保存起来,留作以后使用了。

语音调优

默认AI语音听多了,难免会有些索然寡味之感,幸运的是,Azure平台提供了语音合成标记语言 (SSML) ,它可以改善合成语音的听感。

根据Azure官方文档:https://learn.microsoft.com/zh-cn/azure/cognitive-services/speech-service/speech-synthesis-markup

通过调整语音的角色以及样式来获取定制化的声音:

语音    样式    角色  
en-GB-RyanNeural1    cheerful, chat    不支持  
en-GB-SoniaNeural1    cheerful, sad    不支持  
en-US-AriaNeural    chat, customerservice, narration-professional, newscast-casual, newscast-formal, cheerful, empathetic, angry, sad, excited, friendly, terrified, shouting, unfriendly, whispering, hopeful    不支持  
en-US-DavisNeural    chat, angry, cheerful, excited, friendly, hopeful, sad, shouting, terrified, unfriendly, whispering    不支持  
en-US-GuyNeural    newscast, angry, cheerful, sad, excited, friendly, terrified, shouting, unfriendly, whispering, hopeful    不支持  
en-US-JaneNeural    angry, cheerful, excited, friendly, hopeful, sad, shouting, terrified, unfriendly, whispering    不支持  
en-US-JasonNeural    angry, cheerful, excited, friendly, hopeful, sad, shouting, terrified, unfriendly, whispering    不支持  
en-US-JennyNeural    assistant, chat, customerservice, newscast, angry, cheerful, sad, excited, friendly, terrified, shouting, unfriendly, whispering, hopeful    不支持  
en-US-NancyNeural    angry, cheerful, excited, friendly, hopeful, sad, shouting, terrified, unfriendly, whispering    不支持  
en-US-SaraNeural    angry, cheerful, excited, friendly, hopeful, sad, shouting, terrified, unfriendly, whispering    不支持  
en-US-TonyNeural    angry, cheerful, excited, friendly, hopeful, sad, shouting, terrified, unfriendly, whispering    不支持  
es-MX-JorgeNeural1    cheerful, chat    不支持  
fr-FR-DeniseNeural1    cheerful, sad    不支持  
fr-FR-HenriNeural1    cheerful, sad    不支持  
it-IT-IsabellaNeural1    cheerful, chat    不支持  
ja-JP-NanamiNeural    chat, customerservice, cheerful    不支持  
pt-BR-FranciscaNeural    calm    不支持  
zh-CN-XiaohanNeural5    calm, fearful, cheerful, disgruntled, serious, angry, sad, gentle, affectionate, embarrassed    不支持  
zh-CN-XiaomengNeural1、5    chat    不支持  
zh-CN-XiaomoNeural5    embarrassed, calm, fearful, cheerful, disgruntled, serious, angry, sad, depressed, affectionate, gentle, envious    YoungAdultFemale, YoungAdultMale, OlderAdultFemale, OlderAdultMale, SeniorFemale, SeniorMale, Girl, Boy  
zh-CN-XiaoruiNeural5    calm, fearful, angry, sad    不支持  
zh-CN-XiaoshuangNeural5    chat    不支持  
zh-CN-XiaoxiaoNeural5    assistant, chat, customerservice, newscast, affectionate, angry, calm, cheerful, disgruntled, fearful, gentle, lyrical, sad, serious, poetry-reading    不支持  
zh-CN-XiaoxuanNeural5    calm, fearful, cheerful, disgruntled, serious, angry, gentle, depressed    YoungAdultFemale, YoungAdultMale, OlderAdultFemale, OlderAdultMale, SeniorFemale, SeniorMale, Girl, Boy  
zh-CN-XiaoyiNeural1、5    angry, disgruntled, affectionate, cheerful, fearful, sad, embarrassed, serious, gentle    不支持  
zh-CN-XiaozhenNeural1、5    angry, disgruntled, cheerful, fearful, sad, serious    不支持  
zh-CN-YunfengNeural1、5    angry, disgruntled, cheerful, fearful, sad, serious, depressed    不支持  
zh-CN-YunhaoNeural1、25    advertisement-upbeat    不支持  
zh-CN-YunjianNeural1、345    Narration-relaxed, Sports_commentary, Sports_commentary_excited    不支持  
zh-CN-YunxiaNeural1、5    calm, fearful, cheerful, angry, sad    不支持  
zh-CN-YunxiNeural5    narration-relaxed, embarrassed, fearful, cheerful, disgruntled, serious, angry, sad, depressed, chat, assistant, newscast    Narrator, YoungAdultMale, Boy  
zh-CN-YunyangNeural5    customerservice, narration-professional, newscast-casual    不支持  
zh-CN-YunyeNeural5    embarrassed, calm, fearful, cheerful, disgruntled, serious, angry, sad    YoungAdultFemale, YoungAdultMale, OlderAdultFemale, OlderAdultMale, SeniorFemale, SeniorMale, Girl, Boy  
zh-CN-YunzeNeural1、5    calm, fearful, cheerful, disgruntled, serious, angry, sad, depressed, documentary-narration    OlderAdultMale, SeniorMale
AI 代码解读

这里将语音文本改造为SSML的配置格式:

import os  
import azure.cognitiveservices.speech as speechsdk

  
speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('KEY'), region="eastasia")  
audio_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True)

file_config = speechsdk.audio.AudioOutputConfig(filename="./output.wav")  
  
  
speech_config.speech_synthesis_voice_name='zh-CN-XiaomoNeural'  
  
speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=file_config)  
  
#text = "hello 大家好,这里是人工智能AI机器人在说话"  
  
#speech_synthesis_result = speech_synthesizer.speak_text_async(text).get()  
  
text = """  
    <speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="zh-CN">  
        <voice name="zh-CN-XiaoxiaoNeural">  
            <mstts:express-as style="lyrical"  role="YoungAdultFemale" >  
            <prosody rate="+12.00%">  
                hello 大家好,这里是刘悦的技术博客  
                大江东去,浪淘尽,千古风流人物。  
故垒西边,人道是,三国周郎赤壁。  
乱石穿空,惊涛拍岸,卷起千堆雪。  
江山如画,一时多少豪杰。  
</prosody>  
            </mstts:express-as>  
        </voice>  
    </speak>"""   
  
result = speech_synthesizer.speak_ssml_async(ssml=text).get()
AI 代码解读

通过使用style和role标记进行定制,同时使用rate属性来提升百分之十二的语速,从而让AI语音更加连贯顺畅。注意这里使用ssml=text来声明ssml格式的文本。

结语

人工智能AI语音系统完成了人工智能在语音合成这个细分市场的落地应用,为互联网领域内许多需要配音的业务节约了成本和时间。

目录
打赏
0
0
0
0
1681
分享
相关文章
[oeasy]python081_ai编程最佳实践_ai辅助编程_提出要求_解决问题
本文介绍了如何利用AI辅助编程解决实际问题,以猫屎咖啡的购买为例,逐步实现将购买斤数换算成人民币金额的功能。文章强调了与AI协作时的三个要点:1) 去除无关信息,聚焦目标;2) 将复杂任务拆解为小步骤,逐步完成;3) 巩固已有成果后再推进。最终代码实现了输入验证、单位转换和价格计算,并保留两位小数。总结指出,在AI时代,人类负责明确目标、拆分任务和确认结果,AI则负责生成代码、解释含义和提供优化建议,编程不会被取代,而是会更广泛地融入各领域。
48 28
思维跃迁:生成式人工智能(GAI)认证重塑AI时代核心竞争力范式
在数字化时代,AI不仅是工具,更是思维方式的革新。生成式人工智能(GAI)认证不仅帮助职场人士掌握AI技能,更引领从传统思维向AI思维的转型。通过培养数据敏感性、逻辑严谨性和创新能力,GAI认证填补了技能与思维的鸿沟,为企业和个人提供核心竞争力。拥抱AI思维,共创未来,在数字化浪潮中立于不败之地。
思维跃迁:生成式人工智能(GAI)认证重塑AI时代核心竞争力范式
破界·共生:生成式人工智能(GAI)认证重构普通人的AI进化图谱
本文探讨人工智能未来十大趋势及其对普通人的影响,涵盖神经形态计算、多模态认知融合等前沿领域。同时,文章重点介绍生成式人工智能(GAI)认证体系,帮助普通人从认知重构、能力进化到职业转型和伦理自觉全面学习AI技术,成为人机共生时代的智能伙伴。GAI认证作为加速器,提供系统培训与专业交流平台,助力个体在AI浪潮中把握机遇,共创未来。
如何在Python下实现摄像头|屏幕|AI视觉算法数据的RTMP直播推送
本文详细讲解了在Python环境下使用大牛直播SDK实现RTMP推流的过程。从技术背景到代码实现,涵盖Python生态优势、AI视觉算法应用、RTMP稳定性及跨平台支持等内容。通过丰富功能如音频编码、视频编码、实时预览等,结合实际代码示例,为开发者提供完整指南。同时探讨C接口转换Python时的注意事项,包括数据类型映射、内存管理、回调函数等关键点。最终总结Python在RTMP推流与AI视觉算法结合中的重要性与前景,为行业应用带来便利与革新。
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
87 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
Python下的毫秒级延迟RTSP|RTMP播放器技术探究和AI视觉算法对接
本文深入解析了基于Python实现的RTSP/RTMP播放器,探讨其代码结构、实现原理及优化策略。播放器通过大牛直播SDK提供的接口,支持低延迟播放,适用于实时监控、视频会议和智能分析等场景。文章详细介绍了播放控制、硬件解码、录像与截图功能,并分析了回调机制和UI设计。此外,还讨论了性能优化方法(如硬件加速、异步处理)和功能扩展(如音量调节、多格式支持)。针对AI视觉算法对接,文章提供了YUV/RGB数据处理示例,便于开发者在Python环境下进行算法集成。最终,播放器凭借低延迟、高兼容性和灵活扩展性,为实时交互场景提供了高效解决方案。
【01】AI制作音乐之三款AI音乐软件推荐,包含AI编曲-AI伴奏-AI混音合成remix等-其次关于音乐版权的阐述-跟随卓伊凡学习如何AI制作音乐-优雅草卓伊凡
【01】AI制作音乐之三款AI音乐软件推荐,包含AI编曲-AI伴奏-AI混音合成remix等-其次关于音乐版权的阐述-跟随卓伊凡学习如何AI制作音乐-优雅草卓伊凡
286 13
人工智能(AI)时代,七成CEO职位安全受威胁?
随着AI的迅猛发展,74%的CEO担心未来两年内因未能取得AI商业回报而面临职位不保。Dataiku调查显示,94%的CEO认为AI能提供更出色的商业建议,但也忧虑技术生态锁定和定制化难题。AI治理和提升AI素养成为关键,GAI认证助力CEO应对挑战,确保企业在AI时代立于不败之地。
用通义灵码开发一个Python时钟:手把手体验AI程序员加持下的智能编码
通义灵码是基于通义大模型的AI研发辅助工具,提供代码智能生成、研发问答、多文件修改等功能,帮助开发者提高编码效率。本文通过手把手教程,使用通义灵码开发一个简单的Python时钟程序,展示其高效、智能的编码体验。从环境准备到代码优化,通义灵码显著降低了开发门槛,提升了开发效率,适合新手和资深开发者。最终,你将体验到AI加持下的便捷与强大功能。

热门文章

最新文章