页面载入中,请稍后...

点我安装PWA
您已拒绝通知
    广告广告

    【Python+edge-tts实现文本转语音并播放】

    qaq卟言2023-10-14 08:22:50 Python
    小人奔跑效果开始
    • Python+edge-tts实现文本转语音并播放1.png
    • 之前写了一个爬取哔哩哔哩直播弹幕的功能
    • 但是在乌班图上面进行哔哩哔哩直播的时候
    • 一直看着终端里面的弹幕不太方便,如果有人发送弹幕可能第一时间无法知道,等人走了才发现弹幕
    • 再回答就没有任何意义了,目前实现的方法有三种
    • 第一种
    • 申请第三方接口或者扒别人的接口
    • 这个方法在Python url音乐流播放已经实现了,只需要传递参数给第三方平台
    • 获取到音频文件的url地址就行了,修改一下参数就可以实现音乐或者弹幕的播放了
    • 第二种
    • 使用系统的语音
    • 就像在Windows系统下用win32com调用的windowsSAPI来实现
    • 第三种
    • 使用离线库进行文本转语音
    • 比如像pyttsx3一样传输文本来生成音频文件,然后播放
    • 区别
    • 第一种方法无论是使用第三方平台官方的还是自己扒的接口
    • 无一例外基本上都是有额度限制的,超过了要付费或者限制
    • 第二种系统的语音模型是固定的,或者说可以调节的参数太少了
    • 并且每一个系统的语音也不是一样的
    • 如果需要一个多系统都可以使用的话,要研究对应的系统语音
    • 所以这里我们来实现一下第三种方法
    • 转来转去发现还是edge-tts语音模型比较多,所以使用这个库来实现这个功能
    • 创建配置文件
    • touch config.json
    • 写入内容
    • {
        "cache_music":"cache.mp3",
        "edge_model":"zh-CN-XiaoxiaoNeural",
        "edge_rate":"-4%",
        "edge_volume":"+0%"
      }
    • 创建脚本
    • touch main.py
    • 写入内容
    • """
      -------------------------------------------------
      # !~/桌面/弹幕
      # -*- coding: utf-8 -*-
      # @Time : 2023-08-31 11:37:14
      # @Author : buyan<buyan@mail.qaqbuyan.com>
      # @Description :  必应音频文件播放
      -------------------------------------------------
      """
      
      import json
      import edge_tts
      import asyncio
      from playsound import playsound
      
      # 配置文件
      config = "./config.json"
      configuration = json.load(open(config, encoding='utf-8'))
      # 缓存音频
      cache_music = configuration["cache_music"]
      # -------------------------------------------------
          # 模型
          # 这里我列出来了几个模型,更多详细的模型自行查看官方文档
          # 女
          # zh-CN-XiaoxiaoNeural
          # zh-CN-liaoning-XiaobeiNeural
          # zh-CN-XiaoyiNeural
          # zh-CN-shaanxi-XiaoniNeural
          # 男
          # zh-CN-YunjianNeural
          # zh-CN-YunxiNeural
          # zh-CN-YunxiaNeural
          # zh-CN-YunyangNeural
      # -------------------------------------------------
      voice = configuration["edge_model"]
      #语速 -50% 到 +50%
      rate = configuration["edge_rate"]
      #音量 -50% 到 +50%
      volume = configuration["edge_volume"]
      
      async def edge(text):
          tts = edge_tts.Communicate(text=text, voice=voice, rate=rate, volume=volume)
          await tts.save(cache_music)
          # 播放
          playsound(cache_music)
      
      if __name__ == '__main__':
          # 异步事件循环
          asyncio.run(edge("你好,我是程序员卟言"))
    • 运行脚本
    • python3 ./main.py
    完结

    🔖本文来源:qaq卟言的个人博客网站声明如损害你的权益请联系我们

    ©️版权声明:本文为【qaq卟言】原创文章,写作不易,转载请您添加本文链接,谢谢您的合作!

    📜著作协议:《知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

    ⚠️部分文章图片来自网络,可能存在版权问题。如发现相关争议请联系qaq卟言处理!

    🔗

    广告广告

    随机文章

    该文章已经关闭评论,评论请前往留言信箱