إنشاء بودكاست من ملف PDF باستخدام Vercel AI SDK و LangChain

إنشاء بودكاست من مستند PDF هو طريقة مبتكرة لإعادة استخدام المحتوى والوصول إلى جمهور أوسع. سيرشدك هذا الدليل خلال عملية إعداد نظام لتحويل نص PDF إلى بودكاست جذاب باستخدام Vercel AI SDK و PDFLoader من LangChain و ElevenLabs و Next.js.
المتطلبات المسبقة
قبل البدء، تأكد من توفر ما يلي:
- تثبيت Node.js و npm على جهازك.
- حساب Vercel.
- مفتاح OpenAI API.
- مفتاح ElevenLabs API (إذا كنت تخطط لاستخدام ElevenLabs لتحويل النص إلى كلام).
إعداد المشروع
1. تهيئة تطبيق Next.js
ابدأ بإنشاء تطبيق Next.js جديد:
npx create-next-app@latest pdf-to-podcast --typescript
cd pdf-to-podcast2. تثبيت الحزم المطلوبة
قم بتثبيت التبعيات اللازمة، بما في ذلك Vercel AI SDK و PDFLoader من LangChain والحزم الأخرى المطلوبة:
npm install ai @ai-sdk/openai @langchain/pdfjs zod elevenlabsai: Vercel AI SDK لتكاملات الذكاء الاصطناعي.@ai-sdk/openai: تكامل OpenAI لـ AI SDK.@langchain/pdfjs: PDFLoader من LangChain لتحليل ملفات PDF.zod: مكتبة التحقق من المخطط.elevenlabs: SDK لخدمة تحويل النص إلى كلام من ElevenLabs.
بناء مسار API
أنشئ مسار API للتعامل مع تحويل PDF إلى صوت.
1. إنشاء المسار
في تطبيق Next.js الخاص بك، أنشئ ملفاً جديداً في /app/api/generate-podcast/route.ts.
import { NextResponse } from 'next/server';
import { PDFLoader } from '@langchain/pdfjs';
import fs from 'fs';
import { generateObject } from 'ai';
import { openai } from '@ai-sdk/openai';
import { z } from 'zod';
import { ElevenLabsClient } from 'elevenlabs';
const ELEVEN_LABS_API_KEY = process.env.ELEVEN_LABS_API_KEY;
const elevenLabsClient = ELEVEN_LABS_API_KEY ? new ElevenLabsClient({ apiKey: ELEVEN_LABS_API_KEY }) : null;
export async function POST(req: Request) {
try {
const formData = await req.formData();
const apiKey = formData.get('api_key') as string;
const pdfFile = formData.get('pdf') as File;
if (!pdfFile) {
return NextResponse.json({ error: 'ملف PDF مطلوب' });
}
const pdfBuffer = Buffer.from(await pdfFile.arrayBuffer());
try {
const pdfText = await extractTextFromPDF(pdfBuffer);
const dialogue = await generateDialogue(pdfText, apiKey);
const audioBuffer = await streamDialogueToAudio(dialogue);
return new NextResponse(audioBuffer, {
headers: {
'Content-Type': 'audio/mpeg',
'Content-Disposition': 'inline',
'Content-Length': audioBuffer.length.toString(),
},
});
} catch (parseError) {
console.error('خطأ أثناء تحليل PDF:', parseError);
return NextResponse.json({ error: 'فشل في تحليل محتوى PDF' });
}
} catch (error) {
console.error('خطأ عام في معالج المسار:', error);
return NextResponse.json({ error: 'فشل في معالجة الطلب' });
}
}2. الدوال المساعدة
نفذ الدوال المساعدة لاستخراج النص من PDF وتوليد الحوار وتحويله إلى صوت.
async function extractTextFromPDF(fileBuffer: Buffer): Promise<string> {
const tempFilePath = `/tmp/tmp.pdf`;
fs.writeFileSync(tempFilePath, fileBuffer);
const loader = new PDFLoader(tempFilePath);
const documents = await loader.load();
return documents.map((doc) => doc.pageContent).join('\n');
}
async function generateDialogue(text: string, apiKey: string) {
const dialogueSchema = z.object({
conversation: z.array(
z.object({
speaker: z.string().describe('اسم أو دور المتحدث'),
message: z.string().describe('النص الذي يتحدثه المتحدث في الحوار'),
})
),
});
const systemMessage = `
أنت تنشئ حواراً منظماً لمحادثة بودكاست.
استخدم الهيكل التالي لكل متحدث: دوره والرسالة الخاصة به.
اجعله محادثة جذابة وتغطي النقاط الرئيسية من النص.
`;
const { object: dialogueObject } = await generateObject({
model: openai('gpt-4', { apiKey }),
system: systemMessage,
prompt: `النص: ${text}`,
schema: dialogueSchema,
});
return dialogueObject;
}تنفيذ الواجهة الأمامية
أنشئ واجهة مستخدم لرفع ملفات PDF وتوليد الصوت.
الخاتمة
باتباع هذا الدليل، يمكنك إنشاء بودكاست بنجاح من مستند PDF باستخدام Vercel AI SDK و PDFLoader من LangChain و ElevenLabs و Next.js. يتيح لك هذا الإعداد تحويل المحتوى المكتوب إلى تنسيقات صوتية جذابة، مما يوسع نطاق وصول محتواك وإمكانية الوصول إليه.
ملاحظات مهمة:
- مفاتيح API: تأكد من امتلاكك لمفاتيح API صالحة لـ OpenAI و ElevenLabs وتعيينها في متغيرات البيئة.
- التبعيات: حزمة
aiمن Vercel تبسط تكاملات الذكاء الاصطناعي. - تحويل النص إلى كلام: توفر ElevenLabs خدمات تحويل نص إلى كلام عالية الجودة.
موارد إضافية
ناقش مشروعك معنا
نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.
دعنا نجد أفضل الحلول لاحتياجاتك.
مقالات ذات صلة

ضبط دقيق لـ GPT مع OpenAI و Next.js و Vercel AI SDK
تعلم كيفية ضبط GPT-4o بدقة باستخدام OpenAI و Next.js و Vercel AI SDK لإنشاء Shooketh، روبوت AI مستوحى من شكسبير.

بناء تطبيق متعدد المستأجرين مع Next.js
تعلم كيفية بناء تطبيق متعدد المستأجرين كامل باستخدام Next.js وVercel والتقنيات الحديثة الأخرى.

تنفيذ RAG على ملفات PDF باستخدام البحث في الملفات في واجهة برمجة تطبيقات Responses
دليل شامل حول الاستفادة من واجهة برمجة تطبيقات Responses للتوليد المعزز بالاسترجاع (RAG) الفعال على مستندات PDF.