基于python文案转语音并输出-自媒体等职业副业均可使用,不受他人限制
开发背景:
目前自媒体比较火爆,有很多书单、视频等推广方式可以作为副业盈利,之前每次搞的时候都需要不停的网上找一些在线文字转语音的平台将文案复制上去然后生成下载,好多还是付费的,挺无奈的,然后就想着自己能不能搞,然后的然后就有了下面的东西,
如果大家有此类需要,但是又不想运行代码及环境,请在该博客下回复 邮箱+文案,我生成后会单独发送到对应邮箱
先看效果:
# -*- coding: utf-8 -*-
import asyncio
import os
from edge_tts import Communicate
import time
# 调用合并视频和音频的函数
import mergeVideoAndVoice
from tqdm import tqdm # 引入 tqdm 库用于显示进度条
#检测输入值
def get_non_empty_input(prompt):
"""
获取用户输入的非空字符串,若输入为空则提示用户重新输入。
"""
while True:
value = input(prompt).strip()
if value:
return value
else:
print("输入不能为空,请重新输入。")
#文字转语音方法
async def text_to_speech(text, title, voice, voice_dir):
try:
beginTime = time.time()
communicate = Communicate(text, voice)
endTime = time.time()
temp_audio_file = os.path.join(voice_dir, f"{title}.mp3.temp")
# 计算耗时
elapsedTime = endTime - beginTime
# 打印耗时
print(f"耗时: {elapsedTime} 秒")
#进度条开始前记录下时间
beginProceTime = time.time()
formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(beginProceTime))
print(f"进度条开始: {formatted_time}")
# 使用 tqdm 创建进度条
with tqdm(total=100, desc="音频生成进度") as pbar:
# 运行并等待语音合成完成并保存到临时文件
await communicate.save(temp_audio_file)
# 模拟进度更新
for i in range(100):
await asyncio.sleep(0.1) # 模拟耗时操作
pbar.update(1)
# print(f"当前进度:{i}")
if i == 99:
endProceTime = time.time()
formatted_time_end = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(endProceTime))
print(f"进度条结束: {formatted_time_end} 秒")
proceTime = endProceTime - beginProceTime
print(f"总耗时: {proceTime} 秒")
final_audio_file = os.path.join(voice_dir, f"{title}.mp3")
os.rename(temp_audio_file, final_audio_file)
return final_audio_file
except Exception as e:
# 处理异常
print(f"生成音频文件时发生错误: {e}")
return None
async def main(videoRealPath, videoRealName, text):
isNeedInput = get_non_empty_input("请确认音频保存路径是否需要输入 Y:需要 N:不需要 (不需要输入请确认脚本路径配置正确): ")
print("视频完整路径:" + videoRealPath + " 视频名称:" + videoRealName + "