码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python调用edge-tts实现在线文字转语音


    edge-tts是一个 Python 模块,允许通过Python代码或命令的方式使用 Microsoft Edge 的在线文本转语音服务。

    项目源码

    GitHub - rany2/edge-tts: Use Microsoft Edge's online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an API keyUse Microsoft Edge's online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an API key - rany2/edge-ttsicon-default.png?t=N7T8https://github.com/rany2/edge-tts

    安装

    pip install edge-tts

    用法

    命令行方式

    • --write-media:输出音频
    • --write-subtitles:输出字幕
    edge-tts --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.vtt

    选项检查可用的声音

    edge-tts --list-voices

    改变声音

    • --voice:指定声音
    edge-tts --voice zh-CN-XiaoxiaoNeural --text "君不见黄河之水天上来" --write-media hello.mp3 --write-subtitles hello.vtt

    改变速率、音量和音高

    1. edge-tts --rate=-50% --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.vtt
    2. edge-tts --volume=-50% --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.vtt
    3. edge-tts --pitch=-50Hz --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.vtt

    播放音频

    edge-playback

    edge-playback 用于播放生成的语音。它采用与 edge-tts 相同的参数。

    Python代码方式

    文字转音频

    1. import asyncio
    2. import edge_tts
    3. TEXT = "Hello World!"
    4. VOICE = "en-GB-SoniaNeural"
    5. OUTPUT_FILE = "test.mp3"
    6. async def amain() -> None:
    7. """Main function"""
    8. communicate = edge_tts.Communicate(TEXT, VOICE)
    9. await communicate.save(OUTPUT_FILE)
    10. if __name__ == "__main__":
    11. loop = asyncio.get_event_loop_policy().get_event_loop()
    12. try:
    13. loop.run_until_complete(amain())
    14. finally:
    15. loop.close()

    使用VoicesManager进行动态语音选择的示例

    1. import asyncio
    2. import random
    3. import edge_tts
    4. from edge_tts import VoicesManager
    5. TEXT = "Hoy es un buen día."
    6. OUTPUT_FILE = "spanish.mp3"
    7. async def amain() -> None:
    8. """Main function"""
    9. voices = await VoicesManager.create()
    10. voice = voices.find(Gender="Male", Language="es")
    11. # Also supports Locales
    12. # voice = voices.find(Gender="Female", Locale="es-AR")
    13. communicate = edge_tts.Communicate(TEXT, random.choice(voice)["Name"])
    14. await communicate.save(OUTPUT_FILE)
    15. if __name__ == "__main__":
    16. loop = asyncio.get_event_loop_policy().get_event_loop()
    17. try:
    18. loop.run_until_complete(amain())
    19. finally:
    20. loop.close()

    流式传输来自TTS的音频数据

    1. import asyncio
    2. import edge_tts
    3. TEXT = "Hello World!"
    4. VOICE = "en-GB-SoniaNeural"
    5. OUTPUT_FILE = "test.mp3"
    6. async def amain() -> None:
    7. """Main function"""
    8. communicate = edge_tts.Communicate(TEXT, VOICE)
    9. with open(OUTPUT_FILE, "wb") as file:
    10. async for chunk in communicate.stream():
    11. if chunk["type"] == "audio":
    12. file.write(chunk["data"])
    13. elif chunk["type"] == "WordBoundary":
    14. print(f"WordBoundary: {chunk}")
    15. if __name__ == "__main__":
    16. loop = asyncio.get_event_loop_policy().get_event_loop()
    17. try:
    18. loop.run_until_complete(amain())
    19. finally:
    20. loop.close()

  • 相关阅读:
    xxl-job不停刷日志导致磁盘很快就满
    html做一个画柱形图的软件
    使用代理绕过网站的反爬机制
    【一生一芯】Chap.0 IC常用网站论坛门户 & 如何提出一个技术问题 并尝试解决 | 提问的智慧
    oracle数据库的导入与导出
    基于模糊控制算法的快速反射镜 系统扰动抑制
    轮廓匹配---学习笔记
    CodeTON Round 4 (Div. 1 + Div. 2)C
    埃氏筛法与线性筛法
    页面搭建系统的那些事儿
  • 原文地址:https://blog.csdn.net/watson2017/article/details/136516463
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号