使用Pyttsx3转换长PDF为MP3仅生成最后一页内容的问题排查
PDF转MP3仅生成最后一页内容的问题修复
你的代码能打印所有页面文本,但生成的MP3只有最后一页,问题出在循环里每次都覆盖了clean_text变量,没有把所有页面的文本累加起来。
原代码中,循环内的clean_text = text.strip().replace('\n', ' ')每次都会用当前页的文本替换掉之前的内容,循环结束后clean_text只保留最后一页的文本,所以save_to_file只保存了最后一页。
修复步骤:
- 在循环前初始化一个空字符串,用来存储所有页面的文本
- 循环内将每一页的处理后文本追加到这个字符串中
- 最后用这个完整的字符串生成MP3
修改后的代码:
import pyttsx3, PyPDF2 import os file_path = input('Enter a file path:') if os.path.exists(file_path): pdfreader = PyPDF2.PdfFileReader(open(file_path, 'rb')) engine = pyttsx3.init() # 初始化空字符串存储所有页面文本 full_text = "" for page_num in range(pdfreader.numPages): text = pdfreader.getPage(page_num).extract_text() clean_text = text.strip().replace('\n', ' ') print(clean_text) # 将当前页文本追加到总文本中,加空格分隔避免页面内容粘连 full_text += clean_text + " " voices = engine.getProperty('voices') engine.setProperty('voice', voices[1].id) rate = engine.getProperty('rate') engine.setProperty('rate', rate-55) # 使用总文本生成完整MP3 engine.save_to_file(full_text, 'story.mp3') engine.runAndWait() engine.stop() else: print('The specified file does not exist')
这样修改后,full_text会包含所有页面的文本,生成的MP3就是完整内容了。
内容的提问来源于stack exchange,提问作者SplizZPy
相关产品推荐
相关产品推荐

