【PaddlePaddle+OpenVINO】AI“朗读机”诞生记

本文介绍了基于Paddle模型库在Intel AI BOX边缘设备上部署简易AI“朗读机”的项目。该设备可识别实体书或A4纸文字,按空格键即可发声并截图。部署涉及PaddleOCR、PaddleSpeech等,提供了从PaddleHub和PaddleSpeech调用语音合成模型的两种方式,后者支持更多预训练模型及自定义优化,设备类似预装Windows系统的PC。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

【paddlepaddle+openvino】ai“朗读机”诞生记 - 创想鸟

0 背景介绍

现下,随着各种流行APP的出现,“听书”已经成为一种新的读书方式。不过,相比起电子书软件,要从实体书本中“听书”,就存在不少困难。

比如,电子书软件天然就有准确的文本输入,只需要解决语音合成问题——当然,这看似简单的一步,其实一点也不简单,比如要做好分词、断句,语音合成模型需要在海量数据集上训练等等。

相比之下,从实体书里“听书”,难度则又加了几层——如何做精准的OCR识别?如何把断行的合成语音重整?如何实现点读?实时性如何保证?

接下来这个新系列,我们将开始探索如何基于Paddle模型库实现一个用户体验良好的“点读机”。

还是遵循从易到难的原则,现在,就让我们先开发一个最简单的AI“朗读机”。

1 项目效果展示

在本项目中,我们基于PaddleOCR + PaddleSpeech(PaddleHub)+ OpenVINO,在Intel AI BOX边缘设备上部署了一个简易的AI“朗读机”。不管是实体书还是A4纸,只要送到它面前,只需根据识别效果调整好摆放位置,当用户按下空格键时,就能发出语音,并截下对应时刻的识别图片。

1.1 AI“朗读机”实时展示效果

【PaddlePaddle+OpenVINO】AI“朗读机”诞生记 - 创想鸟

【PaddlePaddle+OpenVINO】AI“朗读机”诞生记 - 创想鸟

1.2 AI“朗读机”运行效果展示

In [1]

from IPython.display import Video

In [2]

Video('2022-05-09 02-16-02.mkv')

In [3]

Video('2022-05-09 02-13-59.mkv')

1.3 Intel AI BOX和摄像识别设备安装图

【PaddlePaddle+OpenVINO】AI“朗读机”诞生记 - 创想鸟

2 部署设备简介

【PaddlePaddle+OpenVINO】AI“朗读机”诞生记 - 创想鸟

参考链接:搭载第 11 代智能英特尔® 酷睿™ U 系列 CPU 和 Hailo-8™ M.2 AI 加速模块的 ASB210-953-AI 边缘 AI 计算系统

小鸽子助手 小鸽子助手

一款集成于WPS/Word的智能写作插件

小鸽子助手 55 查看详情 小鸽子助手

Intel AI BOX我们完全可以把它当一台主机用。同时,因为它预装了Windows系统,所以可以认为,就是大多数人常用的PC设备。

【PaddlePaddle+OpenVINO】AI“朗读机”诞生记 - 创想鸟

当然,正因为它预装的是Windows系统,在部署操作中,我们将只能使用PaddleSpeech的基本语音合成功能。

PaddleSpeech 有三种安装方法。根据安装的难易程度,这三种方法可以分为 简单, 中等 和 困难.

方式 功能 支持系统

简单(1) 使用 PaddleSpeech 的命令行功能. (2) 在 Aistudio上体验 PaddleSpeech.Linux, Mac(不支持M1芯片),Windows中等支持 PaddleSpeech 主要功能,比如使用已有 examples 中的模型和使用 PaddleSpeech 来训练自己的模型.Linux困难支持 PaddleSpeech 的各项功能,包含结合kaldi使用 join ctc decoder 方式解码,训练语言模型,使用强制对齐等。并且你更能成为一名开发者!Ubuntu

3 部署流程

3.1 从PaddleHub调用语音合成模型

这部分内容其实在上一个项目【PaddlePaddle+OpenVINO】打造一个会发声的电表检测识别器中已经很详细地介绍了,这里总结几个需要做的重点过程,并与PaddleSpeech的安装进行对比:

先安装Parakeet其实现在PaddleSpeech暂时也只是把Parakeet合并了过去,我们要用到的中英文语音合成的预训练模型,也都是之前Parakeet训练的;而PaddleSpeech与PaddleHub的区别,只是在于PaddleSpeech的安装过程基本可以做到用户“无感”准备nltk_data文件相比之下,PaddleSpeech在这块的巨大进步在于,nltk_data的准备也做到了用户“无感”,会直接去拉取百度的镜像文件安装,特别贴心!设置截图和语音合成按键对于纸质版的文字材料,OCR识别的准确率还是不太好控制的,所以,如果一上来直接识别,效果肯定不好。因此可以考虑通过按键、按钮控制,让用户选择效果比较稳定的识别帧,截图传入语音合成pipeline开始发音另一方面,这也是从用户体验出发的考虑,否则整个流程会非常卡顿使用playsound播放连续音频通常我们用的PaddleOCR,还是只支持单行识别,我们的处理方式,要么是在送入语音合成前做换行恢复的处理,要么就用连续音频播放解决该问题。个人建议后者的方式,前者在词法和版面分析上,将有大量操作,如果不是发音精度要求特别高的场景,开发性价比不高。

在本项目中,相关的部署代码已放在PaddleCode.zip文件中,读者下载并完成安装后,可以运行python can_new.py命令启动AI“朗读机”。

3.2 从PaddleSpeech调用语音合成模型

本项目提供另一种使用PaddleSpeech输出合成语音的方式,关键代码如下:

from paddlespeech.cli import TTSExecutor # 传入TTSExecutor() run_paddle_ocr(source=0, flip=False, use_popup=True, tts=TTSExecutor())

通过在run_paddle_ocr()函数中,调用Python API的方式,合成语音文件。

wav_file = tts_executor(     text=txts[i],     output='wavs/' + str(i) + '.wav',     am='fastspeech2_csmsc',     am_config=None,     am_ckpt=None,     am_stat=None,     spk_id=0,     phones_dict=None,     tones_dict=None,     speaker_dict=None,     voc='pwgan_csmsc',     voc_config=None,     voc_ckpt=None,     voc_stat=None,     lang='zh',     device=paddle.get_device())

这种做法的好处在于,可以选择更多的预训练模型。我们可以查看TTSExecutor()的源代码:

class TTSExecutor(BaseExecutor):     def __init__(self):         super().__init__()         self.parser = argparse.ArgumentParser(             prog='paddlespeech.tts', add_help=True)         self.parser.add_argument(             '--input', type=str, default=None, help='Input text to generate.')         # acoustic model         self.parser.add_argument(             '--am',             type=str,             default='fastspeech2_csmsc',             choices=[                 'speedyspeech_csmsc',                 'fastspeech2_csmsc',                 'fastspeech2_ljspeech',                 'fastspeech2_aishell3',                 'fastspeech2_vctk',                 'tacotron2_csmsc',                 'tacotron2_ljspeech',             ],             help='Choose acoustic model type of tts task.')         self.parser.add_argument(             '--am_config',             type=str,             default=None,             help='Config of acoustic model. Use deault config when it is None.')         self.parser.add_argument(             '--am_ckpt',             type=str,             default=None,             help='Checkpoint file of acoustic model.')         self.parser.add_argument(             "--am_stat",             type=str,             default=None,             help="mean and standard deviation used to normalize spectrogram when training acoustic model."         )         self.parser.add_argument(             "--phones_dict",             type=str,             default=None,             help="phone vocabulary file.")         self.parser.add_argument(             "--tones_dict",             type=str,             default=None,             help="tone vocabulary file.")         self.parser.add_argument(             "--speaker_dict",             type=str,             default=None,             help="speaker id map file.")         self.parser.add_argument(             '--spk_id',             type=int,             default=0,             help='spk id for multi speaker acoustic model')         # vocoder         self.parser.add_argument(             '--voc',             type=str,             default='pwgan_csmsc',             choices=[                 'pwgan_csmsc',                 'pwgan_ljspeech',                 'pwgan_aishell3',                 'pwgan_vctk',                 'mb_melgan_csmsc',                 'style_melgan_csmsc',                 'hifigan_csmsc',                 'hifigan_ljspeech',                 'hifigan_aishell3',                 'hifigan_vctk',                 'wavernn_csmsc',             ],             help='Choose vocoder type of tts task.')         self.parser.add_argument(             '--voc_config',             type=str,             default=None,             help='Config of voc. Use deault config when it is None.')         self.parser.add_argument(             '--voc_ckpt',             type=str,             default=None,             help='Checkpoint file of voc.')         self.parser.add_argument(             "--voc_stat",             type=str,             default=None,             help="mean and standard deviation used to normalize spectrogram when training voc."         )         # other         self.parser.add_argument(             '--lang',             type=str,             default='zh',             help='Choose model language. zh or en')         self.parser.add_argument(             '--device',             type=str,             default=paddle.get_device(),             help='Choose device to execute model inference.')         self.parser.add_argument(             '--output', type=str, default='output.wav', help='output file name')         self.parser.add_argument(             '-d',             '--job_dump_result',             action='store_true',             help='Save job result into file.')         self.parser.add_argument(             '-v',             '--verbose',             action='store_true',             help='Increase logger verbosity of current task.')

PaddleSpeech 提供的可以被命令行和 python API 使用的预训练模型列表如下:

声学模型

模型 语言

speedyspeech_csmsczhfastspeech2_csmsczhfastspeech2_aishell3zhfastspeech2_ljspeechenfastspeech2_vctken

声码器

模型 语言

pwgan_csmsczhpwgan_aishell3zhpwgan_ljspeechenpwgan_vctkenmb_melgan_csmsczh

但是,从TTSExecutor()的源代码中我们也可以发现,其实它还支持我们配置基于自定义数据集,finetune的语音合成模型,这就为后续的模型性能优化提供了更多可能。

以上就是【PaddlePaddle+OpenVINO】AI“朗读机”诞生记的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/740599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
centos命令行如何配置ip地址
上一篇 2025年11月25日 15:03:35
通义灵码生成流程图怎么弄
下一篇 2025年11月25日 15:03:36

相关推荐

  • 抖音商城是哪个公司在运营

    抖音商城的运营主体揭晓 抖音商城由北京微播视界科技有限公司负责运营。 作为抖音背后的母公司,字节跳动通过其全资子公司——微播视界,全面掌舵抖音平台及其电商板块的日常运作。依托雄厚的技术积累与多元化的业务布局,为用户打造流畅、智能且高效的购物环境。 抖音商城究竟是什么? 抖音商城是抖音App内嵌的一站…

    2026年9月21日
    100
  • Linux如何创建符号链接和硬链接

    Linux如何创建符号链接和硬链接Linux如何创建符号链接和硬链接Linux如何创建符号链接和硬链接Linux如何创建符号链接和硬链接

    符号链接是快捷方式,指向文件或目录路径,原文件删除后链接失效;2. 硬链接共享同一inode,不能跨文件系统或链接目录;3. 使用ln -s创建符号链接,ln创建硬链接;4. 符号链接可跨分区,硬链接删除原文件后仍可访问数据。 在Linux中,创建符号链接(软链接)和硬链接是管理文件和目录的常用操作…

    2026年9月21日 用户投稿
    000
  • mysql如何理解索引选择性

    索引选择性是衡量索引效率的关键指标,定义为索引列不同值数量与总行数的比值,范围在0到1之间。越接近1,数据唯一性越高,索引过滤能力越强,查询性能越好。例如主键列选择性为1,而性别列因重复值多选择性极低。MySQL优化器会优先选择高选择性索引以缩小搜索范围,提高执行效率。可通过SELECT COUNT…

    2026年9月21日
    000
  • 卖不动!iPhone Air暂时停产!库存已经够用了

    据数码博主“定焦数码”透露,苹果iphone air目前已暂停生产。此次调整主要受两方面因素影响:一是该机型在海外市场销量未达预期;二是中国大陆地区的上市时间有所推迟。不过,由于前期已储备了充足的整机库存,当前市场供应不受影响,未来将根据订单积累情况再决定恢复生产的时机。 这一产能变动与此前投资机构…

    2026年9月21日
    000
  • 豆包语音2.0— 字节跳动推出的升级版AI语音模型

    豆包语音2.0是什么 豆包语音2.0是字节跳动推出的升级版ai语音模型,包含两大核心模型:豆包语音合成模型2.0(doubao-seed-tts 2.0)和豆包声音复刻模型2.0(doubao-seed-icl 2.0)。语音合成模型2.0支持对话式合成,可精准理解语义和情感,实现复杂公式朗读,准确…

    2026年9月21日
    100
  • Linux如何查看sudo执行的历史记录

    Linux如何查看sudo执行的历史记录Linux如何查看sudo执行的历史记录Linux如何查看sudo执行的历史记录Linux如何查看sudo执行的历史记录

    要追溯sudo执行的命令,需查看系统日志或配置sudo日志;在Ubuntu/Debian中查/var/log/auth.log,CentOS/RHEL中查/var/log/secure,或使用journalctl _COMM=sudo筛选;通过配置/etc/sudoers中的Defaults log…

    2026年9月21日 用户投稿
    300
  • 如何为VSCode安装新的字体?

    先在操作系统安装字体文件,再在VSCode设置中指定字体名称。1. Windows右键安装.ttf/.otf文件,macOS用字体册安装,Linux复制到~/.fonts并运行fc-cache -fv;2. VSCode中通过设置界面或编辑settings.json修改”editor.f…

    2026年9月21日
    000
  • mysql如何配置ssl安全连接

    MySQL支持SSL时返回YES,通过生成证书并配置my.cnf中的ssl-ca、ssl-cert、ssl-key启用SSL,创建REQUIRE SSL用户确保加密连接,客户端连接需指定证书参数,STATUS或Ssl_cipher验证加密状态。 MySQL 配置 SSL 安全连接可以提升数据库通信的…

    2026年9月21日
    200
  • 从 API 响应中提取元素并在 Java 中使用

    本文介绍了如何在 Java 中解析 API 响应,并从中提取特定元素的值。以 JSON 格式的响应为例,演示了如何使用 Jackson 库将 JSON 字符串转换为 Java 对象,并提取所需的数据,例如账户 ID,以便在后续操作中使用。 在 Java 开发中,经常需要与 API 进行交互,并从 A…

    2026年9月21日
    100
  • 苹果痛失AI大将,Siri关键负责人转投Meta

    苹果痛失AI大将,Siri关键负责人转投Meta苹果痛失AI大将,Siri关键负责人转投Meta苹果痛失AI大将,Siri关键负责人转投Meta苹果痛失AI大将,Siri关键负责人转投Meta

    近日有消息显示,%ignore_a_1%公司负责siri改革的关键高管ke yang已确认离职,并将加入竞争对手meta。这一变动不仅为苹果雄心勃勃的ai计划蒙上了一层阴影,也再次凸显了其在留住顶尖人才方面面临的严峻挑战。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 Dee…

    2026年9月21日 用户投稿
    200
  • REDMI有史以来最强手机!K90 Pro Max这次真的强到爆

    REDMI有史以来最强手机!K90 Pro Max这次真的强到爆REDMI有史以来最强手机!K90 Pro Max这次真的强到爆REDMI有史以来最强手机!K90 Pro Max这次真的强到爆REDMI有史以来最强手机!K90 Pro Max这次真的强到爆

    如果说redmi过去是“性价比之王”,那么这一次,它彻底进化成了“性能怪兽”。10月23日即将登场的redmi k90 pro max,不仅是品牌年度旗舰的压轴大戏,更是其历史上首款冠以“pro max”之名的巅峰之作。 这可以看作是REDMI向高端市场发起冲击的正式宣言。卢伟冰亲自放话:“给4K价…

    2026年9月21日 用户投稿
    300
  • Linux如何升级源码编译安装的软件

    Linux如何升级源码编译安装的软件Linux如何升级源码编译安装的软件Linux如何升级源码编译安装的软件Linux如何升级源码编译安装的软件

    升级源码编译软件需手动操作,核心是卸载旧版后编译安装新版。1. 确认当前版本、路径及编译参数;2. 下载并解压新版本源码,核对完整性;3. 使用相同配置参数执行 ./configure 和 make 编译;4. 停止旧服务,执行 make install 覆盖文件;5. 验证版本与配置,启动服务并检…

    2026年9月21日 用户投稿
    100
  • 访问DeepSeek官方网站 deepseek在线版免费登录

    答案:DeepSeek在线版免费登录入口位于官网https://chat.deepseek.com/sign_in,用户可通过手机号验证码或微信授权登录,新用户免注册,登录后自动创建账户并同步多端数据,支持网页和APP使用。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 De…

    2026年9月21日
    100
  • Windows11提示“此电脑无法运行Windows 11”但已经安装了怎么办_Windows11提示无法运行系统修复方法

    首先检查并启用TPM 2.0与安全启动,进入UEFI设置开启相关选项;若硬件接近要求,可通过注册表新建AllowUpgradesWithUnsupportedTPMOrCPU并设值为1跳过检查;运行sfc /scannow修复系统文件;专业版用户还可通过组策略启用“移除此电脑不符合Windows 1…

    2026年9月21日
    200
  • 如何在Java中配置系统环境变量以运行程序

    正确配置Java环境变量是运行Java程序的前提。1. 安装JDK并记住安装路径,如Windows下为C:Program FilesJavajdk-17,macOS/Linux下为/usr/lib/jvm/jdk-17。2. 设置JAVA_HOME环境变量:Windows在系统变量中新建JAVA_H…

    2026年9月21日
    100
  • mysql如何在SQL中使用聚合函数

    聚合函数用于统计计算并返回单个值,常见函数有COUNT、SUM、AVG、MAX、MIN,通常与GROUP BY配合使用。1. COUNT统计非空值或总行数,SUM求和,AVG求平均,MAX和MIN分别取最大最小值。2. 对orders表整体统计可得总订单数、总额等信息。3. 按user_id分组后可…

    2026年9月21日
    400
  • Valkey 9.0.0 正式 GA,Linux 基金会维护的 Redis 分支

    由 linux 基金会主导维护的 redis 分支——开源内存数据库 valkey 9.0.0 正式发布,现已进入通用可用(ga)阶段。本次版本带来了多项关键性的性能提升与功能增强,重点聚焦于更高效的集群数据迁移、精细化的哈希字段管理能力,以及对大规模分布式部署场景的深度优化。 原子化槽位迁移(At…

    2026年9月21日
    100
  • 如何在Linux中命令分组 Linux括号与花括号区别

    括号()在子shell执行,不影响当前环境;花括号{}在当前shell执行,共享环境变量。示例显示括号内变量修改不生效,花括号内修改生效。选择依据:需隔离用括号,需共享用花括号。常见错误:花括号缺分号、混淆两者作用域。 在Linux中,命令分组主要使用括号和花括号来实现,它们在功能和执行方式上有所不…

    2026年9月21日
    200
  • edge浏览器启动速度特别慢怎么办_edge浏览器启动缓慢优化与提速方法

    首先启用Edge的启动增强功能,然后禁用不必要的扩展程序并清除缓存数据,接着重置浏览器设置,关闭硬件加速与后台运行,最后通过干净启动排查第三方程序干扰。 如果您尝试启动Edge浏览器,但发现加载时间异常漫长,则可能是由于后台进程、扩展程序或系统资源占用导致。以下是解决此问题的多种方法。 本文运行环境…

    2026年9月21日
    100
  • 抖音点单外卖直播怎么做

    如今,抖音已成长为年轻人最热衷的社交娱乐平台之一,而点单外卖直播正逐渐演变为一种新颖的生活方式。那么,究竟该如何在抖音开展一场成功的点单外卖直播呢?接下来的内容将为你全面解析。 挑选合适的外卖合作平台 开启点单外卖直播的第一步,是选择一个靠谱且用户基数大的外卖服务平台。当前主流平台包括美团外卖、饿了…

    2026年9月21日
    100

发表回复

登录后才能评论
关注微信