...

تبدیل متن به گفتار فارسی با Google Gemini API از طریق Asterisk و Issabel

فهرست مطالب

زمان مطالعه: 2 دقیقه

ارتباط مستقیم Google Gemini و Asterisk با تولید فایل صوتی طبیعی برای تماس‌های تلفنی


 هدف:

در این آموزش یاد می‌گیرید چگونه با کمک Google Gemini API یک سیستم تبدیل متن فارسی به گفتار طبیعی راه‌اندازی کنید که:

  • از Dialplan استریسک (Asterisk) قابل فراخوانی باشد

  • خروجی به صورت فایل WAV در مسیر /var/lib/asterisk/sounds/ ذخیره شود

  • مناسب برای پخش در تماس‌ها، منشی گویا، یا Agentهای هوشمند باشد


 معماری کلی:

Asterisk Dialplan

└──> اجرای یک اسکریپت Python یا PHP یا AGI

└──> ارسال متن به Google Apps Script (Web API)

└──> پاسخ: فایل صوتی base64

└──> Decode + ذخیره در مسیر Asterisk

 چه چیزهایی نیاز دارید؟

مورد توضیح
اکانت Google + Gemini API Key دریافت از AI Studio
Google Apps Script منتشر شده به صورت Web App تا درخواست‌های HTTP بپذیرد
اسکریپت Python روی سرور Asterisk برای فراخوانی Gemini و ذخیره فایل
دسترسی به اینترنت از سرور برای تماس با Google Apps Script
مسیر دسترسی‌پذیر Asterisk به فایل‌های صوتی /var/lib/asterisk/sounds/custom/

 مرحله ۱ – ساخت Google Apps Script به صورت Web API

  1. وارد Google Sheets شوید

  2. Extensions > Apps Script

  3. کد زیر را قرار دهید:

const GEMINI_API_KEY = 'YOUR_GEMINI_API_KEY';

function doPost(e) {
const data = JSON.parse(e.postData.contents);
const text = data.text;

const prompt = `
تو یک گوینده حرفه‌ای فارسی هستی. لطفاً متن زیر را به صورت صدای طبیعی (WAV base64) بازگردان:
"${text}"
`;

const response = UrlFetchApp.fetch("https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=" + GEMINI_API_KEY, {
method: "POST",
contentType: "application/json",
payload: JSON.stringify({
contents: [{
parts: [{ text: prompt }]
}]
})
});

const json = JSON.parse(response.getContentText());
const base64Audio = json.candidates?.[0]?.content?.parts?.[0]?.text?.replace(/^data:audio\/wav;base64,/, '');

return ContentService.createTextOutput(base64Audio);
}

  1. از منوی Deploy > Deploy as Web App را انتخاب کنید:

    • اجرا به عنوان: Me

    • دسترسی: Anyone (حتی بدون لاگین)

    • آدرس Web App ذخیره شود (مثلاً https://script.google.com/macros/s/xxx/exec)


 مرحله ۲ – ساخت اسکریپت Python برای سرور Asterisk

فایل saytext.py:

import sys
import base64
import requests
from datetime import datetime

TEXT = sys.argv[1]
URL = "https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec"

output_filename = f"/var/lib/asterisk/sounds/custom/tts_{int(datetime.now().timestamp())}.wav"

response = requests.post(URL, json={"text": TEXT})
if response.status_code == 200:
audio_data = base64.b64decode(response.text)
with open(output_filename, "wb") as f:
f.write(audio_data)
print(output_filename)
else:
print("ERROR")
sys.exit(1)

🔐 دسترسی فایل: chmod +x saytext.py


 مرحله ۳ – اضافه کردن به Dialplan Asterisk

در extensions_custom.conf:

[voipiran]
exten => 800,1,Answer()
exten => 800,n,Set(TEXT=سلام، خوش آمدید به سیستم هوشمند ویپ ایران)
exten => 800,n,System(/usr/bin/python3 /root/saytext.py "${TEXT}")
exten => 800,n,Playback(custom/tts_${EPOCH}) ; اگر نام فایل را ذخیره کردید بر اساس زمان
exten => 800,n,Hangup()

یا می‌تونید نام فایل را توسط SystemOutput بخونید و با Playback(${FILENAME}) اجرا کنید.


 مزایای این روش

مورد مزیت
پشتیبانی از فارسی با خروجی صدای طبیعی
بدون نیاز به Google Cloud Billing فقط Gemini API Key رایگان کافی است
اجرای مستقیم از Asterisk بدون نیاز به رابط کاربری یا دستی
استفاده در Agentهای هوشمند همراه با Vosk یا Node-RED در Issabel
5 1 رای
امتیازدهی به مقاله
اشتراک در
اطلاع از

0 نظرات
قدیمی‌ترین
تازه‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها