import asyncio
import datetime
import edge_tts
from pathlib import Path
def textToVoice(text):
output_file = None
# 内部定义异步函数
async def _amain():
nonlocal output_file
VOICE = "zh-CN-YunxiNeural" # zh-CN-YunxiNeural zh-CN-XiaoxiaoNeural
RATE = "+5%" # 调整语速
communicate = edge_tts.Communicate(text, VOICE, rate=RATE)
# 输出文件名 %Y%m%d_%H%M%S
output_file = datetime.datetime.now().strftime("%m%d_%H%M%S") + ".mp3"
try:
with open(output_file, "wb") as file:
async for chunk in communicate.stream():
if chunk["type"] == "audio":
file.write(chunk["data"])
elif chunk["type"] == "WordBoundary":
# print(f"WordBoundary: {chunk}")
pass
# 确保文件已正确创建并且有内容
if Path(output_file).stat().st_size > 0:
return output_file
else:
# print("File is empty.")
return None
except Exception as e:
# print(f"An error occurred: {e}")
return None
# 使用 asyncio.run 来运行异步函数,对外表现为同步调用
return asyncio.run(_amain())
if __name__ == "__main__":
# pass
# 文字转音频文件
bool = textToVoice('在当今快速变化的世界中,大学生的职业生涯规划变得前所未有的重要。')
if bool is None:
print('文字转语音失败')
else:
print(bool)
文字转MP3
相关推荐
-
生成图片
from PIL import Image, ImageColor, ImageDraw, ImageFont, ImageFilterdef create_image_with_text(size, color, text, font_path, font_size, text_color, shadow_color, output_path): """ Create a new image of specified size and color with centered text that has a border and shadow. :param size: A tuple con
-
获取指定目录下的所有图片信息
1 获取指定目录下的所有图片信息// 获取指定目录下的所有图片信息 public function getImagesInfo($directory) { $images = []; // 创建递归目录迭代器 $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY ); // 遍历目录中的每个文件 foreach (
-
Thinkphp各版本的PHP要求
ThinkPHP 8.0:运行环境要求PHP8.0+,兼容PHP8.3ThinkPHP 6.1:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 6.0:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 5.1:运行环境要求PHP5.6+,兼容PHP8.0ThinkPHP 5.0:运行环境要求PHP5.4+,兼容PHP7.3