当前位置: 首页 > article >正文

永久免费语音服务!微软 Azure 注册实操,零成本实现TTS自由

前段时间,和大家分享了一款免费的语音合成服务 EdgeTTS:

EdgeTTS,支持粤语等各种方言,无需部署无需Key,完全免费

后台有小伙伴反应,最近访问不了。。。

什么情况?实测发现,被qiang了,需要手动添加代理。

没有代理怎么办,有没有平替?

EdgeTTS 底层不就是使用微软的在线语音合成服务么,何不自己搞一个?

说干就干,本篇分享,带大家实操:在微软 Azure 平台,注册一个语音服务,享用免费的 TTS 服务

1. 微软Azure平台介绍

官网:https://azure.microsoft.com/

微软 Azure 是微软提供的一系列云计算服务,包括计算、分析、存储和网络服务。

每个客户只能使用一个免费帐户,试用 30 天后,还有65项服务,每个月都有免费额度。

注:Azure 的免费虚拟机,如果开公网 IP 是需要付费的哦,还没试用过的小伙伴注意。

2. 注册语音服务

成功登录 Azure 后,在控制台,选择创建一个 语音服务

注意这里,国内用户选择 East Asia 节点,离你最近自然速度最快。

然后,在定价层选择 Free F0

后面选择默认选项,创建即可。

创建成功后,在控制台资源列表中可以找到:

免费额度如何?

点进来,右侧查看定价层:

总结来说:

  • 语音识别:每月 5 小时;
  • 语音合成:每月 50 万字符;

如果不是产品上线使用,个人测试,完成足够了吧。

3. TTS 调用

这里以 TTS 为例,介绍下如何使用它的语音服务。

资源主页,点击 Speech Studio,这里展示有平台的各种语音服务:

选择文本转语音语音库

除了在浏览器端试听以外,如果进行后端调用,这里也提供了两种方式!

一种是官方提供的 SDK,需安装后使用。

个人更推荐 REST API 调用,更简单直接!

3.1 REST API

参考文档:https://learn.microsoft.com/en-us/azure/ai-services/speech-service/rest-text-to-speech

首先,在你的资源主页,查看密钥和 URL:

有了这两,后端调用就很简单了。

比如,以Python为例,我想先看看中文音色有哪些:

def tts_azure_list():
    region = 'eastasia'
    url = f'https://{region}.tts.speech.microsoft.com/cognitiveservices/voices/list'
    headers = {"Ocp-Apim-Subscription-Key": azure_key}
    response = requests.get(url, headers=headers)
    data = response.json()
    data = [item for item in data if item['Locale'] == 'zh-CN']
    for item in data:
        if item['Gender'] == 'Female':
            print(item['ShortName'])

进行语音合成,示例代码:

def tts_azure(text='', filename='data/audios/tts.pcm', voice='zh-CN-XiaoxiaoNeural'):
    region = 'eastasia'
    url = f'https://{region}.tts.speech.microsoft.com/cognitiveservices/v1'
    headers = {
        "Ocp-Apim-Subscription-Key": azure_key,
        "Content-Type": "application/ssml+xml",
        "X-Microsoft-OutputFormat": "riff-24khz-16bit-mono-pcm",
        "User-Agent": "aiotbot/0.1.0"
    }
    data = f"<speak version='1.0' xml:lang='en-US'><voice xml:lang='en-US' xml:gender='Female' name='{voice}'>{text}</voice></speak>"
    response = requests.post(url, headers=headers, data=data)
    if response.status_code == 200:
        with open(filename, 'wb') as audio_file:
            audio_file.write(response.content)
    else:
        logger.error('azure tts请求失败,状态码:', response.status_code, response.text)
    return os.path.exists(filename)

需要注意的是:上述参数中的X-Microsoft-OutputFormat就是输出格式,非流式调用,输出只支持 pcm 格式的音频文件。

最后,在控制台-指标,可以查看调用量。50 万字符,放心大胆用吧:

写在最后

本文分享了 EdgeTTS 的免费平替方案:微软 Azure 平台注册并调用语音服务。

如果对你有帮助,不妨点赞收藏备用。


为方便大家交流,新建了一个 AI 交流群,欢迎感兴趣的小伙伴加入。

最近搭建的微信机器人小爱(AI)也在群里,公众号后台「联系我」,拉你进群。


http://www.kler.cn/a/534115.html

相关文章:

  • Linux 安装 RabbitMQ
  • 105,【5】buuctf web [BJDCTF2020]Easy MD5
  • ubuntu 网络管理--wpa_supplicant、udhcpc
  • Vue.js 如何选择合适的组件库
  • SQL序列分析法:核心技巧与实战方法论 | 从用户行为分析到工业设备监控的通用解决方案
  • 【Rust自学】16.4. 通过Send和Sync trait来扩展并发
  • Page Assist实现deepseek离线部署的在线搜索功能
  • Mac 基于Ollama 本地部署DeepSeek离线模型
  • MyBatis Plus 输出完整 SQL(带参数)的 3 种方案
  • Boosting 框架
  • 硬件工程师思考笔记02-器件的隐秘角落:磁珠与电阻噪声
  • 堆的实现——堆的应用(堆排序)
  • CTFSHOW-WEB入门-PHP特性89-100
  • 基于SpringBoot+MySQL的图书借阅管理系统源代码+数据库
  • 稳定Android Studio2021.1.2.16的安装
  • flutter 专题四十四 关于MacOs Catalina “无法打开***,因为无法验证开发者...”的解决方案
  • C语言:把两个16位的数据合成32位浮点型数据
  • 基于 docker 的mysql 5.7 主备集群搭建
  • 【PDF多区域识别】如何批量PDF指定多个区域识别改名,基于Windows自带的UWP的文字识别实现方案
  • 第五十八节 k8s1.30.x 安装Redis集群
  • Redis --- 使用Feed流实现社交平台的新闻流
  • 【C++】STL——list底层实现
  • Java基础进阶
  • vue 学习笔记 - 2、简单的一个例子
  • vscode修改自定义模板
  • DeepSeek图解,10页小册子,PDF开放下载!