StoryTeller
一个多模态的AI讲故事工具,结合了Stable Diffusion、GPT和神经文本转语音(TTS)。
给定一个故事开头的提示语,GPT会编写剩下的情节;Stable Diffusion为每个句子绘制一幅图像;TTS模型则会朗读每一行文字,最终生成一个充满视觉和音频效果的完整动画短片。
安装
PyPI
StoryTeller 可在PyPI上获取。
$ pip install storyteller-core
源码安装
- 克隆仓库。
$ git clone https://github.com/jaketae/storyteller.git
$ cd storyteller
- 安装依赖。
$ pip install .
[!注意] 对于Apple Silicon用户,
mecab-python3
暂不可用。在运行pip install
前您需要安装mecab
。您可以通过Homebrew 使用brew install mecab
来安装。详情请参考 https://github.com/SamuraiT/mecab-python3/issues/84。
- (可选)为了本地开发,请安装
dev
依赖并安装 pre-commit hooks。这将自动在每次提交前触发代码检查及质量检查。
$ pip install -e .[dev]
$ pre-commit install
快速开始
最快运行演示的方法是使用命令行界面(CLI)。要开始,只需键入:
$ storyteller
此命令会使用默认提示 很久以前,独角兽在地球上漫游
来初始化故事。一个生成的示例输出可以在上方的动画中看到。
您可以使用 --writer_prompt
参数自定义故事的开头文本。例如,如果您希望故事以 饥饿的猫,被对金枪鱼的渴望驱使,策划了一项大胆的计划,想要闯入当地鱼市场的金枪鱼储备之中。
开头,CLI命令将如下所示:
storyteller --writer_prompt "饥饿的猫,被对金枪鱼的渴望驱使,策划了一项大胆的计划,想要闯入当地鱼市场的金枪鱼储备之中。"
最终的视频将保存在 /out/out.mp4
目录中,还有其他中间文件如图像、音频文件和字幕等。
为了使用自定义参数调整默认设置,您可以根据需要使用不同的 CLI 标志。要查看所有可用选项的列表,请键入:
$ storyteller --help
这将向您提供选项、描述及默认值列表。
options:
-h, --help 显示此帮助信息并退出
--writer_prompt WRITER_PROMPT
用于编写模型的提示。这是您的故事将以此开头的文本。默认值:
“很久以前,独角兽在地球上漫游。”
--painter_prompt_prefix PAINTER_PROMPT_PREFIX
用于绘画模型提示的前缀。默认值:“美丽的画”
--num_images NUM_IMAGES
要生成的图像数量。这些图像将按顺序组成一个视频。默认值:
10
--output_dir OUTPUT_DIR
保存生成文件的目录。默认值:“out”
--seed SEED 用于随机化的种子值。默认值:42
--max_new_tokens MAX_NEW_TOKENS
在编写模型中生成的新标记的最大数量。默认值:50
--writer WRITER 文本生成模型使用。默认值:“gpt2”
--painter PAINTER 图像生成模型使用。默认值:“stabilityai/stable-diffusion-2”
--speaker SPEAKER 文本到语音(TTS)生成模型。默认值:“tts_models/en/ljspeech/glow-tts”
--writer_device WRITER_DEVICE
文本生成设备使用。默认值:‘cpu’
--painter_device PAINTER_DEVICE
图像生成设备使用。默认值:‘cpu’
--writer_dtype WRITER_DTYPE
文本生成dtype使用。默认值:‘float32’
--painter_dtype PAINTER_DTYPE
图像生成dtype使用。默认值:‘float32’
--enable_attention_slicing ENABLE_ATTENTION_SLICING
是否启用扩散的注意力切片。默认值:“False”
使用方法
命令行接口
CUDA
如果您有一台支持CUDA的机器,运行
$ storyteller --writer_device cuda --painter_device cuda
以利用 GPU。
如果加载所有模型在一个设备上的显存超过可用VRAM,您还可以将每个模型放置在不同的设备上。
$ storyteller --writer_device cuda:0 --painter_device cuda:1
$ 为了更快的生成,请考虑使用半精度。
$ storyteller --writer_device cuda --painter_device cuda --writer_dtype float16 --painter_dtype float16
Apple Silicon
[!注意] PyTorch 对 Apple Silicon (MPS) 的支持还在进行中。在撰写本文时,
torch.cumsum
在 PyTorch 稳定版 2.0.1 上不适用于torch.int64
(问题);仅在每夜版本上有效。
إذا كنت في جهاز Apple Silicon، قم بتشغيل
$ storyteller --writer_device mps --painter_device mps
إذا كنت تريد استخدام تسريع MPS لكلا النموذجين.
للحصول على جيل أسرع، قم بتمكين تجزئة الانتباه لتوفير الذاكرة.
$ storyteller --enable_attention_slicing true
Python
يتضمن المطلقة
مكتبة Python
لاستخدامات أكثر تطورًا، يمكنك أيضًا التفاعل مع StoryTeller مباشرةً عبر شفرة Python.
- قم بتحميل النموذج بالإعدادات الافتراضية.
from storyteller import StoryTeller
story_teller = StoryTeller.from_default()
story_teller.generate(...)
- بدلاً من ذلك، قم بإعداد النموذج بالإعدادات المخصصة.
from storyteller import StoryTeller, StoryTellerConfig
config = StoryTellerConfig(
writer="gpt2-large",
painter="CompVis/stable-diffusion-v1-4",
max_new_tokens=100,
)
story_teller = StoryTeller(config)
story_teller.generate(...)
ترخيص
تم إصداره بموجب ترخيص MIT.