Python朗读在线音频和本地音频的三种方法

在日常的Python软件开发中,我们经常会遇到一个非常重要的功能需求——让程序能够读取并显示文本内容。那么,如何实现这一功能呢?本文将提供几种方法供大家参考,其中第二种方法是最推荐的。

一、pyttsx3法

采用这个第三方模块,可以实现python软件朗读文本。

首先,需要在cmd下安装这个模块:

pip install pyttsx3

然后,就可以通过初始化发声引擎,然后定义引擎的声音大小、语速。

engine = pyttsx3.init()
#设置语速
rate = engine.getProperty('rate')
engine.setProperty('rate', rate - 50)
# 设置发音大小,范围为0.0-1.0
volume = engine.getProperty('volume')
engine.setProperty('volume', 1.2)
# 设置默认的声音:voices[0].id代表男生,voices[1].id代表女生
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)

设置完成之后,们可以定义一个函数,当需要调用这个模型进行发声时,就可以调用这个函数。

def show_sound(text):engine.say(text)#朗读当前内容engine.runAndWait() #朗读直到结束engine.stop() #停止引擎

上面的示例中,你需要把text换成你要读取的内容就可以了。

这种方法调用的引擎声音大小可以调,但是音质一般,有点儿僵化,需要我们采用更为好的音频才可以。

二、转化为语音流的方法

之前,我的思路是,把单词的音频下载到本地,然后再调用。这种方法的优点时音质好,缺点是需要一定的下载时间,有时我们需要即时的调用,就显得不太方便,因此我就想先通过requests获取这个音频,然后转化为语音流,再用pygame读出来,经过与chatgpt对话,发现我这种方法果然有效。

使用这种方法需要安装requests和pygame两个第三方模型。

pip install requests, pygame

其中pygame的个头较大,如果可以的话用镜像下载速度会更快一些。比如:

pip install pygame -i https://mirrors.aliyun.com/pypi/simple/

安装完后,我们导入模型,初始化pygame, 定义函数。

import requests
import pygame
from io import BytesIO
pygame.init() #初始化pygame
def show_sound(text):audio_path = f"https://dict.youdao.com/dictvoice?audio={text}&type=1" #获取音频地址resp = requests.get(audio_path) #获取二进制数据audio_data = BytesIO(resp.content) #转化为音频流pygame.mixer.music.load(audio_data) #加载音频流pygame.mixer.music.play() #播放音频while pygame.mixer.music.get_busy(): #确保完全读完,不间断continue

上面的示例中,你需要把text换成你要读取的内容就可以了。

三、读取本地mp3法

读取本地mp3这种方法比较稳妥,适用于没有网络情况下也能朗读的情况,但是本地得用对应的语音库才可以。我们可以使用pygame和pydub这两个模型分别来实现。

1. pygame法

这种方法和第二种方法差不多,只不过不用获取网络的音频了,直接读取本地音频就可以了。

import pygamedef play_mp3(file_path):pygame.mixer.init()pygame.mixer.music.load(file_path)pygame.mixer.music.play()if __name__ == "__main__":mp3_file = "your_file_path.mp3"  # 替换为你的MP3文件路径play_mp3(mp3_file)

在上面示例中,你需要将your_file_path.mp3替换为你本地MP3文件的路径。然后运行该脚本,它将会播放指定的MP3文件。

2. pydub法

pydub可能会比pygame个头小一点儿,打包时更省力,以下给出一个样例代码,供大家参考。

首先还是需要安装pygdub这个第三方模块:

pip install pydub

然后,利用下面的代码:

from pydub import AudioSegment
from pydub.playback import playdef play_mp3(file_path):sound = AudioSegment.from_mp3(file_path)play(sound)if __name__ == "__main__":mp3_file = "your_file_path.mp3"  # 替换为你的MP3文件路径play_mp3(mp3_file)

在上面的示例中,你需要将your_file_path.mp3替换为你本地MP3文件的路径。然后运行该脚本,它将会播放指定的MP3文件。

四、学后反思

  1. 学习Python要掌握使用chatgpt等人工智能技术,有好的想法就多向它请教,争取能够找到更优的方案。
  2. 优质的音频可以通过在线字典获取,只要知道它的下载地址就可以通过requests来获取。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android studio 性能调试

一、概述 Android studio 的Profiler可用来分析cpu和memory问题,下来进行说明介绍。 二、Android studio CPU调试 从开发模拟器或设备中启动应用程序; 在 Android Studio 中,通过选择View > Tool Windows > Profiler启动分析器。 应…

Mac-自动操作 实现双击即可执行shell脚本

背景 在Mac上运行shell脚本,总是需要开启终端窗口执行,比较麻烦 方案 使用Mac上自带的“自动操作”程序,将shell脚本打包成可运行程序(.app后缀),实现双击打开即可执行shell脚本 实现细节 找到Mac上 应用程序中的 自动操作&am…

Selenium 学习(0.20)——软件测试之单元测试

我又(浪完)回来了…… 很久没有学习了,今天忙完终于想起来学习了。没有学习的这段时间,主要是请了两个事假(5工作日和10工作日)放了个年假(13天),然后就到现在了。 看了下…

Apache Maven介绍|Maven安装

Apache Maven是一款流行的Java项目管理和构建工具,用于自动化构建过程,包括编译、测试、打包、依赖管理和发布等工作。以下是Maven安装步骤解析: 在Windows系统中安装Maven 下载Maven: 访问Maven官方网站(https://mav…

git基础命令(二)

目录 git revert 撤消上一次提交的更改但是会创建一个新的提交来撤消该提交所做的更改git show 显示提交详细信息git mv 重命名文件git rm 从工作树和索引中移除文件git clean 从工作树中移除未跟踪文件git checkout 将文件恢复到工作树git reset 撤销更改、移动 HEAD 指针以及…

Layer Normalization 算法 和 Batch Normalization 算法的 python实现

Layer Normalization 算法 import torch from torch import nnclass LN(nn.Module):# 初始化def __init__(self, normalized_shape, # 在哪个维度上做LNeps:float 1e-5, # 防止分母为0elementwise_affine:bool True): # 是否使用可学习的缩放因子和偏移因子super(LN, self…

【大模型系列】图片生成(DDPM/VAE/StableDiffusion/ControlNet/LoRA)

文章目录 1 DDPM(UC Berkeley, 2020)1.1 如何使用DDPM生成图片1.2 如何训练网络1.3 模型原理 2 VAE:Auto-Encoding Variational Bayes(2022,Kingma)2.1 如何利用VAE进行图像增广2.2 如何训练VAE网络2.3 VAE原理2.3.1 Auto-Encoder2.3.2 VAE编码器2.3.3 VAE解码器 3 …

一文解读ISO26262安全标准:术语(二)

一文解读ISO26262安全标准:术语(二) 本文继续补充一些标准中的术语,方便后续文章内容的有效理解。 分支覆盖率 branch coverage 控制流分支覆盖的比率. 100%分支覆盖率意味着100%语句覆盖率,比如,一个if语句…

速盾cdn:服务器ip能直接加cdn吗

速盾CDN(Content Delivery Network)是一种通过在全球各地部署服务器节点,将网站或应用的内容分发到离用户最近的节点上,从而加速网站的访问速度和提升用户体验的技术方案。那么,服务器IP能否直接与CDN配合使用呢&#…

【UE5】持枪状态站立移动的动画混合空间

项目资源文末百度网盘自取 创建角色在持枪状态站立移动的动画混合空间 在BlendSpace文件夹中单击右键选择动画(Animation)中的混合空间(Blend Space) 选择SK_Female_Skeleton 命名为BS_RifleStand 打开 水平轴表示角色的方向,命名为Direction,方…

CASIA-HWDB手写体数据集gnt生成为png格式

👑一、数据集获取 1.1 官方链接获取gnt文件 http://www.nlpr.ia.ac.cn/databases/download/feature_data/HWDB1.1trn_gnt.ziphttp://www.nlpr.ia.ac.cn/databases/download/feature_data/HWDB1.1tst_gnt.zip 1.2 百度网盘获取gnt文件 链接:https://pan.baidu.com/s/1pKa…

c++11 标准模板(STL)(std::locale)(五)用此 locale 的 collate 刻面以字典序比较两个字符串

用以封装文化差异的多态刻面的集合 std::locale 类型对象是不可变平面的不可变索引集。 C 输入/输出库的每个流对象与一个 std::locale 对象关联,并用其平面分析及格式化所有数据。另外, locale 对象与每个 std::basic_regex 对象关联。 locale 对象亦可…

Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?

目录 一、面试官心理分析 二、面试题剖析 一、面试官心理分析 这个也是线上非常常见的一个问题,就是多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个 key,修改值之后再写回…

KKVIEW: 远程控制软件哪个好用

远程控制软件哪个好用 随着科技的发展和工作方式的改变,远程控制软件越来越受到人们的关注和需求。无论是在家中远程办公,还是技术支持人员为远程用户提供帮助,选择一款高效稳定的远程控制软件至关重要。在众多选择中,有几款远程…

51-30 World Model | 自动驾驶的世界模型:综述

24年3月,澳门大学和夏威夷大学联合发布的工作,World Models for Autonomous Driving: An Initial Survey。花时间反复看了几遍,刚开始觉得世界模型没用,空洞无序,根本不可能部署到实车上,后面逐渐相信&…

idea 导入项目

idea 导入项目并运行 导入设置设置 jdk查看maven 设置 导入 在项目首页 或者 file 选择 open, 然后选择项目根路径 设置 设置 jdk 查看maven 设置

[Python学习]变量存储逻辑和垃圾回收机制(GC)

一、引子 首先,我们从两个例子入手垃圾回收机制: a 1000 b 2000 a b a 100 b 200 a b 这两段代码的功能都是“把b变量的值赋值给a变量”,但是在Python的底层逻辑上,这两段代码的实现过程确是有所不同的。 过程:第一段代码…

基于java实用的音乐软件微信小程序的设计与实现【附项目源码】分享

基于实用的音乐软件微信小程序的设计与实现: 源码地址:https://download.csdn.net/download/weixin_43894652/88842586 一、引言 随着移动互联网的普及和微信小程序的兴起,音乐类小程序成为了用户随时随地享受音乐的重要工具。本需求文档旨在详细阐述一…

基于单片机的大棚温湿度控制系统设计

摘要:现阶段我国的科学技术方面得到了快速的发展,各项社会事业的发展也都进行了智能化技术的应用,农业事业智能化发展在现如今时代发展进程中变得越来越重要了,如果能够实现对大鹏的温度和湿度进行有效且稳定的控制,能够实现现代的农业大棚高水平的发展,这对于我国整体的…

Python 实现一个简单的中文分词处理?

在Python中,实现一个简单的中文分词处理,我们可以采用基于规则的方法,比如最大匹配法、最小匹配法、双向匹配法等。但更常见且效果更好的是使用现有的分词库,如jieba分词。   以下是使用jieba分词库进行中文分词的简单示例: 安装jieba 首先,你需要安装jieba库。如果你…