python 生成tts语音

之前一直使用微软、或者国内大厂的接口,网页操作比较麻烦,最近发现一个python库可以完美解决,在这里分享给大家

在这里

GitHub - rany2/edge-tts: Use Microsoft Edge's online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an API key

使用很简单

pip install edge-tts

他支持两种形式,一种命令行形式,目前测试下来,有时候不太稳定,不推荐,但是功能相对全些

另一种是运行python 脚本形式,目前测试下来比较稳定,分享给大家

#!/usr/bin/env python3

"""
Basic example of edge_tts usage in synchronous function
"""

import edge_tts

TEXT = "Hello World!"
VOICE = "en-GB-SoniaNeural"
OUTPUT_FILE = "test.mp3"


def main() -> None:
    """Main function"""
    communicate = edge_tts.Communicate(TEXT, VOICE)
    communicate.save_sync(OUTPUT_FILE)


if __name__ == "__main__":
    main()
    import soundfile as sf
    import sounddevice as sd
    data, fs = sf.read(OUTPUT_FILE)
    sd.play(data, fs)
    sd.wait()

这里是列举了目前支持的声音版本

个人喜欢云溪,就是大家在抖音 b站经常听到的声音 ---哈哈,生产利器呀

生成玩后,调用soundfile  进行播放,有时间做一个上位机界面出来,还是比较实用的

完整代码

#https://github.com/rany2/edge-tts
import edge_tts

TEXT = "你好,CSDN!"


#VOICE = "en-GB-SoniaNeural"
#晓晓 女
#VOICE = "zh-CN-XiaoxiaoNeural"
#云健 -不好听
#  VOICE = "zh-CN-YunjianNeural"
#云溪 男好听
VOICE =  "zh-CN-YunxiNeural"
#云夏 女好听
#VOICE = "zh-CN-YunxiaNeural"
#云扬 男官方版本
#VOICE = "zh-CN-YunyangNeural"
#辽宁 小北女
#VOICE = "zh-CN-liaoning-XiaobeiNeural"
#台湾 女
#VOICE = "zh-TW-HsiaoChenNeural"
#台湾男
#VOICE = "zh-TW-YunJheNeural"
#小云 台湾 女
#VOICE = "zh-TW-HsiaoYuNeural"
#陕西方言 小妮
#VOICE = "zh-CN-shaanxi-XiaoniNeural"
# 女 晓意
#VOICE = "zh-CN-XiaoyiNeural"
#女 香港
#VOICE ="zh-HK-HiuGaaiNeural"
#女 香港
#VOICE = "zh-HK-HiuMaanNeural"
#男 香港
#VOICE = "zh-HK-WanLungNeural"


OUTPUT_FILE = "test.mp3"


def main() -> None:
    """Main function to process audio and metadata synchronously."""
    communicate = edge_tts.Communicate(TEXT, VOICE)
    with open(OUTPUT_FILE, "wb") as file:
        for chunk in communicate.stream_sync():
            if chunk["type"] == "audio":
                file.write(chunk["data"])
            elif chunk["type"] == "WordBoundary":
                print(f"WordBoundary: {chunk}")


if __name__ == "__main__":
    main()
    import soundfile as sf
    import sounddevice as sd
    data, fs = sf.read(OUTPUT_FILE)
    sd.play(data, fs)
    sd.wait()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/926213.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式硬件实战提升篇(三)商用量产电源设计方案 三路电源输入设计 电源管理 多输入供电自动管理 DCDC降压

引言:本文你能实际的了解到实战量产产品中电源架构设计的要求和过程,并且从实际实践出发搞懂电源架构系统,你也可以模仿此架构抄板到你自己的项目,并结合硬件篇之前的项目以及理论形成正真的三路电源输入设计与开发板电源架构块供…

SAP SD学习笔记16 - 请求书的取消 - VF11

上一章讲了 返品处理流程中的 参照请求传票(发票)来生成返品传票。 SAP SD学习笔记15 - 返品处理流程2 - 参照请求传票(发票)来生成返品传票-CSDN博客 本章讲 请求传票的取消。 目录 1,请求书取消的概要 2&#xf…

CLIP-MMA: Multi-Modal Adapter for Vision-Language Models

当前的问题 CLIP-Adapter仅单独调整图像和文本嵌入,忽略了不同模态之间的交互作用。此外,适应性参数容易过拟合训练数据,导致新任务泛化能力的损失。 动机 图1所示。多模态适配器说明。 通过一种基于注意力的 Adapter ,作者称之…

51单片机快速入门之中断的应用 2024/11/23 串口中断

51单片机快速入门之中断的应用 基本函数: void T0(void) interrupt 1 using 1 { 这里放入中断后需要做的操作 } void T0(void): 这是一个函数声明,表明函数 T0 不接受任何参数,并且不返回任何值。 interrupt 1: 这是关键字和参…

【Spring】聊聊@EventListener注解原理

1.一个Demo出发 在平时的开发中,其实编写同步线程代码是比较容易的,但是如何将一些操作和另外一些操作进行解除耦合,而事件方式 是一种很好的解耦合方式,比如当一个用户注销一个APP之后,需要发送一些短信 让他引流回来…

【和春笋一起学C++】使用new创建动态数组

目录 1. 什么是动态数组 2. 怎么使用动态数组 1. 什么是动态数组 char name[20]; 上面这种方式创建的数组在程序编译时将为它分配内存空间,不管程序最终是否使用数组,数组都在那里,它占用了内存空间。在编译时给数组分配内存被称为静态联编…

2-2-18-9 QNX系统架构之文件系统(一)

阅读前言 本文以QNX系统官方的文档英文原版资料为参考,翻译和逐句校对后,对QNX操作系统的相关概念进行了深度整理,旨在帮助想要了解QNX的读者及开发者可以快速阅读,而不必查看晦涩难懂的英文原文,这些文章将会作为一个…

ECharts柱状图-极坐标系下的堆叠柱状图,附视频讲解与代码下载

引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个柱状图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供…

Android复习简答题

一、基础入门 Android程序架构 (1)app:用于存放程序的代码和资源等内容。包含很多子目录 libs:存放第三方jar包 src/androidTest:存放调试的代码文件 src/main/androidMainfest.xml 整个程序的配置文件,可配置程序所需要的权…

PaddleOCR:一款高性能的OCR工具介绍

一、引言 随着人工智能技术的不断发展,光学字符识别(OCR)技术在各行各业得到了广泛应用。OCR技术能够将图片、扫描件等非结构化数据中的文字信息提取出来,转换为可编辑的文本格式。在我国,百度开源了一款优秀的OCR工具…

HTML5好看的音乐播放器多种风格(附源码)

文章目录 1.设计来源1.1 音乐播放器风格1效果1.2 音乐播放器风格2效果1.3 音乐播放器风格3效果1.4 音乐播放器风格4效果1.5 音乐播放器风格5效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者&…

11、数组

1、数组概念 数组就是存储多个相同数据类型的数据。 比如:存储26个字母,存储一个班级的学生成绩。 2、数组使用 数组要遵循先定义再使用 2.1、数组定义的格式 存储数据---空间 ---- 数据类型 多少个 --- 数据个数 >> 数据类型 数…

C底层 函数栈帧

文章目录 一,什么是寄存器 二,栈和帧 前言 我们在学习c语言程序的时候,是不是有很多的疑问,如 1,为什么形参不可以改变实参 2,为什么我们编写程序的时候会出现烫烫烫......这个乱码 3,那些局…

MATLAB期末复习笔记(二)

三、MATLAB函数和程序结构 1.MATLAB文件 两种类型的M文件: • 脚本 ,不接受输入参数或返回输出参数。它们处理工作区中的数据。 • 函数 ,可接受输入参数,并返回输出参数。内部变量是函数的局部变量。 ① 函数文件是另一类 m 文…

redis的应用----缓存

redis的应用----缓存 一、缓存的概念二、使用redis作为缓存2.1使用redis作为缓存的原因2.2缓存机制的访问步骤 三、缓存的更新策略3.1定期更新3.2实时更新3.3淘汰策略 四、缓存常见的问题4.1缓存预热(Cache preheating)4.2缓存穿透(Cache penetration)4.3缓存雪崩(Cache avalan…

2025年Java面试八股文大全

很多人会问Java面试八股文有必要背吗? 我的回答是:很有必要。你可以讨厌这模式,但你一定要去背,因为不背你就进不了大厂。 国内的互联网面试,恐怕是现存的、最接近科举考试的制度。 而且,我国的八股文确…

JiaJia-CP-1,2,3的WP(2)

一.JiaJia-CP-2 一看题目,聊天软件,用的什么聊天软件直接userassist看运行过什么程序 vol -f JiaJia_Co.raw --profileWin7SP1x64 userassist 发现Telegram.exe(小飞机) 可能性很大啊(真是个摸鱼大神) 除此之外,filescan也能看到&#xff0…

小F的矩阵值调整

问题描述 小F得到了一个矩阵。如果矩阵中某一个格子的值是偶数,则该值变为它的三倍;如果是奇数,则保持不变。小F想知道调整后的矩阵是什么样子的。 测试样例 样例1: 输入:a [[1, 2, 3], [4, 5, 6]] 输出&#xff1a…

Docker Buildx 与 CNB 多平台构建实践

一、Docker Buildx 功能介绍 docker buildx 是 Docker 提供的一个增强版构建工具,支持更强大的构建功能,特别是在构建多平台镜像和高效处理复杂 Docker 镜像方面。 1.1 主要功能 多平台构建支持 使用 docker buildx,可以在单台设备上构建…

uni-app 使用笔记

1.缓存用法 (1)uni-app 存值取值删除 官网:https://uniapp.dcloud.net.cn/api/storage/storage.html#setstorage 存值 uni.setStorageSync(storage_key, hello);取值 uni.getStorageSync(storage_key)删除 uni.removeStorageSync(storag…