☰
Scrapegraph-ai SpeechGraph 实战指南:从网页抓取到 AI 语音摘要生成
2026/9/30 2:33:50 网站建设 项目流程
  • 网页爬虫
  • 人工智能
  • AI 应用

【免费下载链接】Scrapegraph-ai

Python scraper based on AI

项目地址:https://gitcode.com/GitHub_Trending/sc/Scrapegraph-ai
点击查看免费下载

本文围绕 Scrapegraph-ai 官方示例 examples/speech_graph/README.md 展开,系统讲解 SpeechGraph 的核心能力:一条集网页抓取、内容解析、LLM 文本分析与语音合成(Text-to-Speech)于一体的端到端管线。你将掌握 SpeechGraph 的图结构与节点调用链、graph_config的完整配置方法、环境变量设置,以及如何把示例 speech_graph_openai.py 改造为可直接运行的语音摘要生成脚本,并学会解读执行统计信息。

SpeechGraph 是什么

SpeechGraph 是 Scrapegraph-ai 提供的"语音摘要图":它抓取指定网页,让 LLM 根据用户 prompt 生成一段文字回答,再调用 TTS 模型把回答合成为音频文件输出。从源码类注释看,它的定位是"a scraping pipeline that scrapes the web, provide an answer to a given prompt, and generate an audio file"(见 speech_graph.py)。

官方 README 归纳的四大能力分别为:

  • Speech-to-text conversion(语音转文本)——对音频输入做语音识别与内容提取;
  • Audio processing(音频处理)——音频数据的预处理与输出;
  • Text analysis(文本分析)——对抓取内容进行 LLM 语义分析;
  • Sentiment analysis(情感分析)——对文本做情绪/倾向性判断。

安装与初始化环境

安装依赖

在仓库根目录下,通过requirements-dev.txt安装开发所需依赖(包含dotenv、openai等运行 SpeechGraph 必需的库):

pip install -r requirements-dev.txt

若希望最小化安装,至少需要:scrapegraph-ai主体、python-dotenv(加载.env)、以及openai(驱动 TTS 客户端)。

配置环境变量

  1. 复制环境变量模板:将 examples/speech_graph/.env.example 拷贝为同目录下的.env文件:
cp examples/speech_graph/.env.example examples/speech_graph/.env
  1. 在.env中填入你的 API Key:
# OpenAI API Configuration OPENAI_API_KEY=your-openai-api-key-here # Whisper API Configuration (Optional) WHISPER_API_KEY=your-whisper-api-key-here # Optional Configurations MAX_TOKENS=4000 MODEL_NAME=gpt-4-1106-preview TEMPERATURE=0.7 # Speech Settings AUDIO_FORMAT=mp3 SAMPLE_RATE=16000

READMEE 明确给出的两个核心变量为:

变量必填性作用
OPENAI_API_KEY必需同时驱动 LLM 回答生成与 TTS 语音合成
WHISPER_API_KEY可选用于 Whisper 语音识别(语音转文本场景)

模板中的MODEL_NAME、TEMPERATURE、MAX_TOKENS、AUDIO_FORMAT、SAMPLE_RATE为可选配置,示例脚本本身仅从环境读取OPENAI_API_KEY,其余参数可直接写进graph_config。

核心使用方式:一行图、一段话、一个音频

README 给出的最小调用范式如下:

from scrapegraphai.graphs import SpeechGraph graph = SpeechGraph() text = graph.process("audio_file.mp3")

需要说明的是,这是 README 的示意性 API。在当前仓库的实际实现中,SpeechGraph 的构造与运行接口是prompt + source + config三元组配合run()(见 speech_graph.py 与run()方法),process并非现有公开方法。真实可运行的写法请以下一节示例为准。

完整可运行示例解析

仓库提供了官方可运行脚本 examples/speech_graph/speech_graph_openai.py,其目标是把https://perinim.github.io/projects/页面内容总结成一段语音。逐段拆解如下:

1) 定义音频输出路径

import os from dotenv import load_dotenv from scrapegraphai.graphs import SpeechGraph from scrapegraphai.utils import prettify_exec_info load_dotenv() FILE_NAME = "website_summary.mp3" curr_dir = os.path.dirname(os.path.realpath(__file__)) output_path = os.path.join(curr_dir, FILE_NAME)

脚本把生成的音频命名为website_summary.mp3,输出到脚本所在目录(即examples/speech_graph/下)。

2) 构造 graph_config

openai_key = os.getenv("OPENAI_API_KEY") graph_config = { "llm": { "api_key": openai_key, "model": "openai/gpt-4o", "temperature": 0.7, }, "tts_model": {"api_key": openai_key, "model": "tts-1", "voice": "alloy"}, "output_path": output_path, }

配置分三层,对应三种模型/职责:

  • llm:回答生成的基座模型。model采用provider/model形式,openai/gpt-4o会被 abstract_graph.py 拆分为 provider=openai、model=gpt-4o并交给init_chat_model实例化;temperature控制回答随机性。
  • tts_model:语音合成模型配置,默认值见 openai_tts.py:model默认tts-1,voice默认alloy(OpenAI 内置音色之一)。
  • output_path:音频落盘路径。若不提供,run()会回退到默认文件名output.mp3(见 speech_graph.py)。

3) 实例化并运行

speech_graph = SpeechGraph( prompt="Make a detailed audio summary of the projects.", source="https://perinim.github.io/projects/", config=graph_config, ) result = speech_graph.run() print(result)
  • prompt决定 LLM 回答的内容与风格;
  • source为抓取目标。SpeechGraph 在初始化时会根据 source 前缀自动判断输入类型:source.startswith("http")时输入键为url,否则为local_dir(见 speech_graph.py),因此 source 也可以是本地目录路径;
  • run()返回图执行后的最终回答文本(final_state["answer"]),同时会把生成的音频写入output_path。

4) 打印执行统计

graph_exec_info = speech_graph.get_execution_info() print(prettify_exec_info(graph_exec_info))

get_execution_info()返回各节点的执行明细(token 数、请求数、成本、耗时),prettify_exec_info会将其格式化为表格文本(见 prettify_exec_info.py),便于观测全链路开销。

图结构与底层调用链

SpeechGraph 通过_create_graph()串联四个节点(见 speech_graph.py):

FetchNode → ParseNode → GenerateAnswerNode → TextToSpeechNode
  • FetchNode:根据url | local_dir抓取页面内容。URL 场景下默认使用 ChromiumLoader 渲染页面(headless),得到doc;若use_soup为 True 则改用requests直接拉取 HTML(见 fetch_node.py)。
  • ParseNode:将 HTML 转为纯文本(Html2TextTransformer),再按chunk_size切块,产出parsed_doc。SpeechGraph 传入的chunk_size取自self.model_token——即 LLM 模型的 token 上限(见 parse_node.py)。
  • GenerateAnswerNode:把user_prompt与文档内容交给 LLM 生成回答,写入answer。单文档走TEMPLATE_NO_CHUNKS直接回答;多分块则并行分块作答后合并(见 generate_answer_node.py)。
  • TextToSpeechNode:从状态取出answer文本,交给 TTS 模型合成音频字节,写入audio(见 text_to_speech_node.py)。

图由 BaseGraph 驱动:从入口节点FetchNode开始,沿边依次执行;execute()结束后的final_state中同时含有answer(文本)与audio(字节)。

音频落盘的关键一步

run()中TextToSpeechNode产出的只是字节数据,真正写文件的是 save_audio_from_bytes:

audio = self.final_state.get("audio", None) if not audio: raise ValueError("No audio generated from the text.") save_audio_from_bytes(audio, self.config.get("output_path", "output.mp3"))

OpenAITextToSpeech.run()调用client.audio.speech.create(model, voice, input)并返回response.content(见 openai_tts.py),即音频的二进制内容。若图执行后未产生audio,会直接抛出ValueError,提醒检查 TTS 配置。

运行前提与注意事项

  1. 网络与 Key 依赖:整个流程需要能访问 OpenAI API 的网络环境,且OPENAI_API_KEY同时用于 LLM 与 TTS,Key 失效会先后在回答生成和语音合成阶段失败。
  2. 模型可用性:gpt-4o、tts-1均为示例所写模型;实际可用性以你的 API 账号为准。若要切换,只需修改graph_config中的model字段。
  3. 输出文件:output_path指向脚本同目录的website_summary.mp3,运行时该目录需可写。
  4. 输入类型灵活:source支持 URL 或本地目录,SpeechGraph 自动在url/local_dir两种输入键间切换。
  5. 成本观测:TTS 调用按字符计费,回答越长、合成音频越大、成本越高;建议先用prettify_exec_info查看生成节点的 token 与成本统计后再规模化运行。

小结

SpeechGraph 把"网页抓取 → LLM 文本分析 → 语音合成"三条能力串成一条可复用管线:graph_config只暴露llm、tts_model、output_path三个核心配置块,图内部则由 Fetch → Parse → GenerateAnswer → TextToSpeech 四个节点协作完成。官方 README 与 speech_graph_openai.py 共同构成了最快上手的路径:配置.env、组装配置字典、实例化SpeechGraph并run(),即可获得一份由任意网页生成的音频摘要。想要进一步定制,可参照 speech_graph.py 的节点组装逻辑,替换tts_model或接入 schema 结构化输出。

  • 网页爬虫
  • 人工智能
  • AI 应用

【免费下载链接】Scrapegraph-ai

Python scraper based on AI

项目地址:https://gitcode.com/GitHub_Trending/sc/Scrapegraph-ai
点击查看免费下载

相关推荐

上一篇:Dagger File.withReplaced 指南:FileWithReplacedOpts 类型详解与文件内容替换实战
下一篇:mistral.rs 本地 GGUF 模型加载与推理实战:从零运行离线 GGUF 文件

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询