文本转视频

继续前面一个实例,给转换后的文本配上一张图片,形成mp4视频文件

文本文件内容

bash 复制代码
近日网络上一条网友的发言意外走红,相关观点迅速在数码和汽车圈层扩散,也随之引发了大范围的公众争议。

Python代码

bash 复制代码
# 导入 PyTorch 深度学习框架,用于模型加载和指定运行设备(如 GPU)
import torch
# 导入 soundfile 库,用于将生成的音频数据保存为 WAV 等音频文件
import soundfile as sf
# 从 qwen_tts 库中导入 Qwen3TTSModel 类,这是核心的语音合成模型
from qwen_tts import Qwen3TTSModel
# 导入 moviepy 用于音视频合成
from moviepy import ImageClip, AudioFileClip

def txt_to_speech(txt_path, output_audio, output_video, model_path, image_path=None):
    """
    将文本文件转换为语音并保存为音频文件,可选合成 MP4 视频。
    """
    # 1. 加载模型
    print(f"正在加载模型: {model_path} ...")
    model = Qwen3TTSModel.from_pretrained(
        model_path,
        device_map="cuda:0",
        dtype=torch.bfloat16,
        attn_implementation="sdpa"
    )
    print("模型加载完成!")

    # 2. 读取文本内容
    with open(txt_path, 'r', encoding='utf-8') as f:
        text_content = f.read().strip()

    if not text_content:
        print("文本文件为空,退出程序。")
        return

    # 3. 执行语音合成
    print("正在合成语音...")
    wavs, sr = model.generate_custom_voice(
        text=text_content,
        language="Chinese",
        speaker="Vivian",
        instruct="用温柔、专业的语气朗读。"
    )

    # 4. 保存音频文件 (WAV)
    sf.write(output_audio, wavs[0], sr)
    print(f"✅ 语音合成完毕,已保存至: {output_audio}")

    # 5. 如果提供了背景图片,则合成 MP4 视频
    if image_path:
        print("正在合成 MP4 视频...")
        try:
            audio_clip = AudioFileClip(output_audio)
            image_clip = ImageClip(image_path).with_duration(audio_clip.duration)
            video_clip = image_clip.with_audio(audio_clip)
            
            # ✅ 加上 fps=24 即可解决报错
            video_clip.write_videofile(output_video, codec="libx264", audio_codec="aac", fps=24)
            print(f"✅ MP4 视频合成完毕,已保存至: {output_video}")
        except Exception as e:
            print(f"❌ MP4 合成失败: {e}")

if __name__ == "__main__":
    TXT_FILE = "test.txt"
    OUTPUT_WAV = "output.wav"
    OUTPUT_MP4 = "output.mp4"
    MODEL_PATH = "../Qwen3-TTS-12Hz-0.6B-CustomVoice"
    
    # 提供一张背景图片的路径(如 jpg 或 png)
    BG_IMAGE = "tts.jpg" 
    
    txt_to_speech(TXT_FILE, OUTPUT_WAV, OUTPUT_MP4, MODEL_PATH, BG_IMAGE)

转换

bash 复制代码
C:\Users\admin\Desktop>python tts.py

********
Warning: flash-attn is not installed. Will only run the manual PyTorch version. Please install flash-attn for faster inference.
********

正在加载模型: ../Qwen3-TTS-12Hz-0.6B-CustomVoice ...
模型加载完成!
正在合成语音...
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
✅ 语音合成完毕,已保存至: output.wav
正在合成 MP4 视频...
MoviePy - Building video output.mp4.
MoviePy - Writing audio in outputTEMP_MPY_wvf_snd.mp4
MoviePy - Done.
MoviePy - Writing video output.mp4

MoviePy - Done !
MoviePy - video ready output.mp4
✅ MP4 视频合成完毕,已保存至: output.mp4

转换结果

output

依赖

bash 复制代码
pip install torch transformers qwen_tts soundfile moviepy imageio-ffmpeg
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
相关推荐
angushine2 小时前
文本转视频2
人工智能·音视频·语音识别
刘广睿3 小时前
给素材库加语音转写:Whisper 本地部署与批量字幕生成实践
人工智能·aigc·音视频·语音识别·效率工具
benbenAItalk11 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
AI创界者15 小时前
前沿多模态大模型 MiniMax-H3无审查 本地部署与深度实测指南
人工智能·aigc·音视频
世岩清上20 小时前
展厅数字内容同质化严重,怎样打造专属叙事风格?
大数据·前端·javascript·人工智能·html·音视频·展厅改造
LCG元21 小时前
STM32F407 I2S驱动WM8978音频播放实战:PLLI2S时钟整定、DMA双缓冲防爆音与WAV采样率实测
stm32·嵌入式硬件·音视频
jbk331121 小时前
PixiuCut「视频批量分割」支持智能镜头分割、按时长、按数量分割,可定义最小时长避免无效片段等多可选参数可设置
人工智能·音视频·剪辑软件·剪映自动化软件
投票竞赛21 小时前
作品投票版权注意事项,线上评选上传图片视频须知
python·音视频
byte轻骑兵1 天前
【AVDTP】规范精讲[13]: 吃透内容保护机制,打通蓝牙音视频版权加密全流程
人工智能·音视频·avrcp·蓝牙耳机·蓝牙音频