pdf文字转语音

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

分为2个部分,

  1. 将pdf转成文本文件
  2. 将文本文件转成mp3格式

一、需要的库

import pyttsx3,PyPDF2

二、使用步骤

1.将pdf文件转成字符串

代码如下(示例):

import pyttsx3,PyPDF2

pdfreader = PyPDF2.PdfReader(open('zhenyefu - 副本.pdf', 'rb'))

#将所有的文字放在textwra里,我转的pdf,30多万字,直接放在字符串里没有问题
textwra=''
for page_num in range(len(pdfreader.pages)):
    text = pdfreader.pages[page_num].extract_text()
    cleaned_text = text.strip().replace('\n',' ')
    textwra=textwra+cleaned_text

2.将字符串转成语音mp3格式

如何在Python中将字符串划分为“n”部分
文本转换为语音——pyttsx3模块的使用
代码如下(示例):

def remix(str1, x):
    """分割常字符串的 因为字符串太大了,我这里需要切割"""
    stride1, mod = divmod(len(str1), x)
    print(stride1,mod)
    parts = [str1[i * stride1:(i + 1) * stride1] for i in range(x)]
    parts[-1] = parts[-1] + str1[-mod]
    return parts
    
text_list=remix(textwra,5)

for i in range(len(text_list)):
    print(f'在完成第{i+1}部分,字符串的长度是{len(text_list[i])}')
    speaker.save_to_file(text_list[i], f'test_test{i+1}.mp3')
    speaker.runAndWait()
speaker.stop()

总结

完整的代码如下:

import pyttsx3,PyPDF2

# pdfreader = PyPDF2.PdfReader(open('zhenyefu.pdf', 'rb'))
pdfreader = PyPDF2.PdfReader(open('zhenyefu - 副本.pdf', 'rb'))
speaker = pyttsx3.init()

print(len(pdfreader.pages))

def remix(str1, x):
    """分割常字符串的"""
    stride1, mod = divmod(len(str1), x)
    print(stride1,mod)
    parts = [str1[i * stride1:(i + 1) * stride1] for i in range(x)]
    parts[-1] = parts[-1] + str1[-mod]
    return parts

textwra=''
for page_num in range(len(pdfreader.pages)):
    text = pdfreader.pages[page_num].extract_text()
    cleaned_text = text.strip().replace('\n',' ')
    textwra=textwra+cleaned_text

print(len(textwra))
text_list=remix(textwra,5)
for i in range(len(text_list)):
    print(f'在完成第{i+1}部分,字符串的长度是{len(text_list[i])}')
    speaker.save_to_file(text_list[i], f'test_test{i+1}.mp3')
    speaker.runAndWait()
speaker.stop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值