مجله ایرانیکاسرور آموزش سرور، هاست، وردپرس و شبکه پنل کاربری

راه‌اندازی Voice AI شخصی روی VPS: از Whisper تا Ollama و Piper

تصور کنید یک دستیار صوتی دارید که صدای شما را می‌شنود، به فارسی دقیق می‌نویسد، منطقی پاسخ می‌دهد و پاسخ را با صدای طبیعی برایتان می‌خواند. همه این‌ها بدون ارسال حتی یک بایت از…

✍ Amir Jabbari 📅 6 مهر 1405 ⏱ 9 دقیقه مطالعه 👁 6 بازدید 💬 0 دیدگاه

تصور کنید یک دستیار صوتی دارید که صدای شما را می‌شنود، به فارسی دقیق می‌نویسد، منطقی پاسخ می‌دهد و پاسخ را با صدای طبیعی برایتان می‌خواند. همه این‌ها بدون ارسال حتی یک بایت از داده‌های صوتی شما به سرورهای خارجی. این وعده‌ای است که Voice AI خودمیزبان روی VPS عملی می‌کند. در این راهنما، از صفر تا صد ساخت یک دستیار صوتی کاملاً شخصی را با استفاده از Whisper، Ollama و Piper بررسی می‌کنیم؛ ابزارهایی که هر کدام به تنهایی استاندارد صنعت هستند و در کنار هم یک سیستم یکپارچه می‌سازند.

چرا این موضوع امروز مهم است؟ هزینه‌های API سرویس‌های ابری مثل Whisper OpenAI به ازای هر دقیقه صدا محاسبه می‌شود و در مقیاس سازمانی می‌تواند به رقم‌های قابل توجهی برسد. از طرف دیگر، حریم خصوصی مکالمات تلفنی مشتریان یا جلسات داخلی یک شرکت، چیزی نیست که بشود با خیال راحت به سرویس شخص ثالث سپرد. راه‌حل self-hosted، هم هزینه را به یک عدد ثابت ماهانه تبدیل می‌کند و هم کنترل کامل بر داده را به شما می‌دهد.

زیرساخت پردازش صوتی خود را از همین امروز بسازید

برای اجرای Whisper، Ollama و مدل‌های زبانی به منابع CPU، RAM و دیسک NVMe نیاز دارید. پلن‌های سرور مجازی ایرانیکاسرور با منابع اختصاصی، دیسک NVMe پرسرعت و آپ‌تایم ۹۹.۹٪، بستر ایده‌آل برای Voice AI شما هستند.

📞 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

Voice AI چگونه کار می‌کند؟ معماری یکپارچه

یک سیستم Voice AI خودمیزبان از سه جزء اصلی تشکیل می‌شود که به صورت زنجیره‌ای عمل می‌کنند:

[کاربر] → ضبط صدا → [Whisper] → متن فارسی → [Ollama + LLM] → پاسخ متنی → [Piper TTS] → فایل صوتی → [کاربر]

Whisper یک مدل تشخیص گفتار از OpenAI است که به صورت متن‌باز منتشر شده و روی حجم عظیمی از داده‌های چندزبانه آموزش دیده است . این مدل می‌تواند گفتار فارسی را با دقت قابل قبولی حتی در نسخه‌های کوچک‌تر تشخیص دهد. Ollama یک ران‌تایم ساده برای اجرای مدل‌های زبانی بزرگ (LLM) به صورت محلی است که مدیریت مدل‌هایی مثل Llama، Mistral و Gemma را بسیار آسان می‌کند. و Piper یک موتور تبدیل متن به گفتار سبک و سریع است که مدل‌های فارسی آن نیز موجود است .

پیش‌نیازهای سخت‌افزاری: چقدر منابع نیاز دارید؟

انتخاب منابع VPS مستقیماً به این بستگی دارد که آیا قصد دارید از GPU استفاده کنید یا نه. اگر GPU در دسترس نباشد، Whisper large-v3 روی CPU به هیچ وجه real-time نیست و برای پردازش دسته‌ای یا آفلاین مناسب است، نه مکالمه زنده . جدول زیر یک راهنمای عملی برای انتخاب پلن مناسب ارائه می‌دهد.

سناریو CPU RAM GPU / VRAM مناسب برای
دمو / تست 4 Core 8 GB — Whisper small + Mistral 7B
تولید سبک 8 Core 16 GB — Whisper medium + Llama 3.1 8B
مکالمه زنده 8 Core+ 32 GB NVIDIA 16GB+ Whisper large-v3 + LLM روی GPU
سازمانی / چندکاربره 16 Core+ 64 GB NVIDIA 24GB+ Whisper large-v3 + diarization + LLM

نکته کلیدی: برای اجرای Whisper large-v3 با دقت بالا روی GPU، حداقل ۱۰ گیگابایت VRAM نیاز است . اگر قصد دارید همزمان diarization (تشخیص گوینده) نیز فعال کنید، این عدد به حدود ۱۵-۱۶ گیگابایت می‌رسد . برای مکالمه زنده و real-time، GPU تقریباً اجباری است؛ در غیر این صورت تجربه کاربری به شدت کند خواهد بود.

⚠️ هشدار مهم: اگر VPS شما GPU ندارد، از انتخاب Whisper medium یا large خودداری کنید. حتی یک فایل صوتی ۳۰ ثانیه‌ای ممکن است چند دقیقه طول بکشد. برای شروع، Whisper small روی CPU معقول‌ترین گزینه است.

گام اول: نصب و راه‌اندازی Whisper

Whisper را می‌توانید به دو روش نصب کنید: مستقیم با pip یا از طریق Docker. روش pip ساده‌تر است اما مدیریت وابستگی‌ها را خودتان باید انجام دهید. Docker تمیزتر است و برای محیط تولید توصیه می‌شود.

روش pip (سریع)

sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip ffmpeg -y
pip install openai-whisper torch torchvision torchaudio

پس از نصب، می‌توانید صحت نصب را با دستور whisper –help بررسی کنید. FFmpeg برای خواندن فرمت‌های مختلف صوتی (MP3، M4A و غیره) ضروری است.

روش Docker (تمیزتر)

برای محیط تولید، یک سرویس Docker جداگانه برای Whisper در نظر بگیرید. سرویس‌های آماده‌ای مثل Vexa-ai/whisper_service وجود دارند که از faster-whisper و Ray Serve برای پردازش موازی استفاده می‌کنند . اگر خودتان می‌خواهید یک compose ساده بنویسید:

services:
whisper:
image: onerahmet/openai-whisper-asr-webservice:latest-gpu
ports:
– “9000:9000”
environment:
– ASR_MODEL=small
deploy:
resources:
reservations:
devices:
– driver: nvidia
count: 1
capabilities: [gpu]

گام دوم: راه‌اندازی Ollama و انتخاب مدل زبانی

Ollama را با یک خط دستور نصب کنید:

curl -fsSL https://ollama.com/install.sh | sh

حالا نوبت انتخاب مدل است. برای یک VPS با ۸ گیگابایت RAM، مدل‌های ۷-۸ میلیارد پارامتری با کوانتیزاسیون 4-bit انتخاب هوشمندانه‌ای هستند. اگر GPU با حداقل ۸ گیگابایت VRAM دارید، می‌توانید مدل‌های بزرگ‌تر یا نسخه‌های با کوانتیزاسیون بالاتر را اجرا کنید.

مدل حجم (تقریبی) RAM موردنیاز کیفیت پاسخ فارسی
Mistral 7B ~4.5 GB ~5 GB متوسط
Llama 3.1 8B ~4.7 GB ~6 GB خوب
Gemma 2 2B ~1.6 GB ~3 GB قابل قبول

برای شروع، Llama 3.1 8B تعادل خوبی بین کیفیت و منابع برقرار می‌کند. دانلود و اجرا:

ollama pull llama3.1:8b
ollama run llama3.1:8b

گام سوم: تبدیل متن به گفتار با Piper

Piper یک موتور TTS سبک و سریع است که برای اجرا روی CPU هم بهینه شده. برای زبان فارسی، چند مدل آموزش‌دیده روی Hugging Face وجود دارد که بهترین آن‌ها مدل Mana-Persian-Piper است . این مدل با معماری medium و روی دیتاست Mana-TTS فاین‌تیون شده و کیفیت طبیعی خوبی برای مکالمه دارد.

pip install piper-tts
git clone https://huggingface.co/MahtaFetrat/Mana-Persian-Piper
echo “سلام، سیستم صوتی شما آماده است” | piper \
–model Mana-Persian-Piper/fa_IR-mana-medium.onnx \
–output_file response.wav

نکته: مدل Piper فارسی دیگری با نام fa_IR-gyro-medium نیز در Hugging Face موجود است که توسط جامعه کاربران آموزش داده شده . اگر با مدل Mana کیفیت رضایت‌بخشی ندیدید، مدل gyro را امتحان کنید.

گام چهارم: اتصال سه سرویس با FastAPI

حالا باید این سه سرویس را به هم وصل کنید. یک API ساده با FastAPI بسازید که فایل صوتی را دریافت کند، آن را به Whisper بدهد، متن را به Ollama بفرستد، پاسخ را به Piper بدهد و فایل صوتی نهایی را برگرداند.

import whisper
import requests
import subprocess
from fastapi import FastAPI, UploadFile, File
from fastapi.responses import FileResponse
import os

app = FastAPI()
model = whisper.load_model(“small”)

@app.post(“/voice”)
async def voice(file: UploadFile = File(…)):
# ذخیره فایل موقت
input_path = f”/tmp/{file.filename}”
with open(input_path, “wb”) as f:
f.write(await file.read())

# Whisper: صدا به متن
result = model.transcribe(input_path, language=”fa”)
text = result[“text”]

# Ollama: تولید پاسخ
response = requests.post(
“http://localhost:11434/api/generate”,
json={“model”: “llama3.1:8b”, “prompt”: text, “stream”: False}
)
answer = response.json()[“response”]

# Piper: متن به صدا
output_path = “/tmp/answer.wav”
process = subprocess.run(
[“piper”, “–model”, “fa_IR-mana-medium.onnx”, “–output_file”, output_path],
input=answer.encode(), capture_output=True
)

return FileResponse(output_path, media_type=”audio/wav”)

این کد ساده است اما برای دمو کافی است. در محیط تولید باید مدیریت خطا، صف پردازش و محدودیت همزمانی را نیز در نظر بگیرید.

پردازش صوت به صورت حرفه‌ای نیازمند دیسک پرسرعت است

مدل‌های Whisper و LLM حجم بالایی دارند و خواندن و نوشتن مداوم فایل‌های صوتی روی دیسک کند، تجربه کاربر را خراب می‌کند. سرور مجازی ایرانیکاسرور با دیسک NVMe و منابع اختصاصی، پردازش صوت را بدون I/O Wait ممکن می‌کند.

📞 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

مشکلات رایج و راه‌حل‌های عملی

۱. مصرف بالای RAM و کمبود حافظه

اجرای همزمان Whisper و LLM می‌تواند به راحتی ۱۰-۱۵ گیگابایت RAM مصرف کند. اگر با خطای OOM (Out of Memory) مواجه شدید، دو راه دارید: یا مدل‌های کوچک‌تر را انتخاب کنید، یا RAM سرور را افزایش دهید. برای LLM، کوانتیزاسیون 4-bit مثل llama3.1:8b-q4_0 مصرف را به شدت کاهش می‌دهد.

۲. سرعت پایین تبدیل صوت

اگر از CPU برای Whisper استفاده می‌کنید و مدل medium یا بزرگ‌تر را انتخاب کرده‌اید، انتظار سرعت واقعی نداشته باشید. طبق مستندات پروژه self-hosted-stt-gateway، Whisper large-v3 روی CPU به هیچ وجه real-time نیست . راه‌حل قطعی، استفاده از GPU است. اگر GPU ندارید، Whisper small بهترین گزینه است.

۳. پاسخ‌های طولانی و بی‌ربط

مدل زبانی بزرگ انتخاب کرده‌اید یا پرامپت‌تان به اندازه کافی محدودکننده نیست. برای دستیار صوتی، پاسخ‌ها باید کوتاه و مفید باشند. یک system prompt به Ollama بدهید که مدل را ملزم کند در حداکثر ۲-۳ جمله پاسخ دهد.

۴. کیفیت پایین تشخیص گفتار فارسی

Whisper در نسخه‌های کوچک روی زبان فارسی دقت بالایی ندارد. اگر دقت برایتان حیاتی است، از Whisper medium یا large استفاده کنید. همچنین تنظیم پارامتر language=”fa” و استفاده از initial_prompt با چند جمله فارسی می‌تواند دقت را بهبود دهد.

۵. خطاهای CUDA و نصب درایور

اگر VPS شما GPU دارد اما PyTorch آن را تشخیص نمی‌دهد، ابتدا با دستور nvidia-smi وجود درایور را بررسی کنید. سپس با ubuntu-drivers devices درایور مناسب را پیدا و نصب کنید. برای Docker نیز باید nvidia-container-toolkit را نصب کرده باشید.

مقایسه: Voice AI ابری در برابر خودمیزبان

معیار سرویس ابری (OpenAI Whisper API) خودمیزبان روی VPS
هزینه $0.006 به ازای هر دقیقه ثابت ماهانه VPS
حریم خصوصی داده به سرور شخص ثالث می‌رود ۱۰۰٪ روی زیرساخت خودتان
تأخیر (Latency) وابسته به اینترنت وابسته به منابع سرور
کنترل مدل محدود کامل

اتصال به سیستم‌های دیگر

بعد از اینکه Voice AI شما راه افتاد، می‌توانید آن را به سرویس‌های دیگر متصل کنید:

🔹 ربات تلگرام: با استفاده از کتابخانه python-telegram-bot، فایل صوتی دریافتی را به API خود پاس دهید و پاسخ صوتی را برگردانید.

🔹 CRM و تیکتینگ: تماس‌های مشتریان را به صورت خودکار رونویسی و خلاصه کنید.

🔹 مرکز تماس: با اتصال به Asterisk یا FreeSWITCH، یک پاسخگوی صوتی هوشمند بسازید.

پروژه Voice AI خود را روی زیرساخت مطمئن اجرا کنید

برای اجرای مداوم Whisper و Ollama به سروری با آپ‌تایم بالا، منابع اختصاصی و پشتیبانی فنی ۲۴/۷ نیاز دارید. تیم ایرانیکاسرور در انتخاب پلن مناسب و رفع مشکلات نصب در کنار شماست.

📞 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

جمع‌بندی

ساخت یک Voice AI خودمیزبان ترکیبی از سه فناوری بالغ و مقرون‌به‌صرفه است: Whisper برای تشخیص گفتار، Ollama برای اجرای مدل زبانی محلی، و Piper برای تولید گفتار. هیچ‌کدام از این‌ها به API خارجی وابسته نیستند و همه چیز روی VPS خودتان اجرا می‌شود.

کلید موفقیت در انتخاب منابع مناسب است. اگر به دنبال مکالمه زنده هستید، GPU یک ضرورت است. اگر هدف پردازش دسته‌ای یا رونویسی آفلاین است، یک VPS با CPU قدرتمند و RAM کافی نیز کار را راه می‌اندازد.

با راه‌اندازی این سیستم، شما نه تنها یک دستیار صوتی شخصی دارید، بلکه یک زیرساخت پایه برای پروژه‌های بزرگ‌تر مثل پشتیبانی تلفنی هوشمند، ربات‌های صوتی سازمانی و سیستم‌های پرسش و پاسخ مبتنی بر اسناد ساخته‌اید. همه این‌ها بدون یک ریال هزینه API و بدون نگرانی از حریم خصوصی.

درخواست کانفیگ اختصاصی یا رفع مشکل

اگر در نصب Whisper، راه‌اندازی Ollama یا اتصال سرویس‌ها به مشکلی خوردید، تیم فنی ایرانیکاسرور آماده کمک است. کافی است درخواست خود را ثبت کنید.

📞 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

این آموزش برایت مفید بود؟ می‌توانی لینک آن را ذخیره یا برای دیگران ارسال کنی.

Amir Jabbari

نویسنده مجله ایرانیکاسرور؛ منتشرکننده آموزش‌ها و راهنماهای کاربردی در حوزه هاست، سرور، وردپرس و شبکه.

برای اجرای آموزش به زیرساخت نیاز داری؟

سرویس مرتبط را ببین؛ معرفی خدمات در این بخش کوتاه نگه داشته شده تا تمرکز اصلی صفحه روی آموزش باقی بماند.

ایرانیکاسرور
گفت‌وگو درباره آموزش

دیدگاه‌ها

0 دیدگاه برای این مطلب ثبت شده است.

هنوز دیدگاهی ثبت نشده است؛ اگر سؤال یا تجربه‌ای درباره این آموزش داری، همین‌جا بنویس. پاسخ‌های مدیریت و کاربران به‌صورت مشخص از هم تفکیک می‌شوند.

دیدگاه یا سؤال خود را بنویسید

ایمیل شما منتشر نمی‌شود. فیلدهای ضروری مشخص شده‌اند.