يحول Murf AI النص إلى كلام طبيعي المظهر مع تعليقات صوتية بجودة استوديو. يدمج المطورون واجهة برمجة تطبيقات Murf AI لبناء تطبيقات تروي المحتوى، وتنشئ إصدارات صوتية من المقالات، وتشغل المساعدين الافتراضيين، وتولد تعليقات صوتية على نطاق واسع.
ما هي واجهة برمجة تطبيقات Murf AI؟
Murf AI يوفر خدمة تحويل النص إلى كلام سحابية تحول المحتوى المكتوب إلى صوت واقعي يشبه صوت الإنسان. على عكس محركات TTS التي تبدو روبوتية، يستخدم Murf تخليق الصوت المدعوم بالذكاء الاصطناعي لإنتاج تنغيم طبيعي، وتأكيد مناسب، وتعبير عاطفي أصيل.

تعرض واجهة برمجة التطبيقات هذه الوظيفة للمطورين. تشمل الإمكانيات الرئيسية ما يلي:
- مكتبة الأصوات - الوصول إلى أكثر من 120 صوتًا مدعومًا بالذكاء الاصطناعي تتنوع بين الجنسين والأعمار واللهجات
- دعم متعدد اللغات - إنشاء كلام بأكثر من 20 لغة بما في ذلك الإنجليزية والإسبانية والفرنسية والألمانية والهندية
- تخصيص الصوت - ضبط درجة الصوت والسرعة والتركيز للتحكم الدقيق
- تنسيقات إخراج متعددة - تصدير الصوت بصيغ MP3 أو WAV أو FLAC
- دعم SSML - ضبط النطق بدقة باستخدام لغة ترميز تركيب الكلام (Speech Synthesis Markup Language)
يستخدم المطورون واجهة برمجة تطبيقات Murf AI لسرد الفيديو، وإنتاج البودكاست، وأنظمة الرد الصوتي التفاعلي (IVR)، وتوليد الكتب الصوتية، وميزات إمكانية الوصول. تتعامل واجهة برمجة التطبيقات مع المقتطفات القصيرة والمحتوى الطويل، مما يجعلها مناسبة لمجموعة متنوعة من حالات الاستخدام.
البدء باستخدام واجهة برمجة تطبيقات Murf AI
قبل إجراء استدعاءات API، تحتاج إلى إعداد المصادقة. يستخدم Murf AI مفاتيح API للترخيص، باتباع اصطلاحات REST القياسية.
الخطوة 1: إنشاء حساب Murf AI
قم بزيارة murf.ai واشترك للحصول على حساب. يقدم Murf طبقة مجانية مع رصيد محدود، وهو ما يعمل بشكل جيد لاختبار واجهة برمجة التطبيقات. للاستخدام الإنتاجي، ستحتاج إلى خطة مدفوعة تتضمن الوصول إلى واجهة برمجة التطبيقات.
الخطوة 2: إنشاء مفتاح Murf AI API الخاص بك
انتقل إلى إعدادات حسابك وحدد موقع قسم API. أنشئ مفتاح API جديدًا وقم بتخزينه بأمان. سيصادق هذا المفتاح جميع طلباتك.
حافظ على سرية مفتاح API الخاص بك. لا تلتزم أبدًا بتخزينه في التحكم بالإصدار أو تعريضه في كود جانب العميل.
الخطوة 3: فهم عنوان URL الأساسي لواجهة برمجة تطبيقات Murf AI
تذهب جميع طلبات Murf AI API إلى:
https://api.murf.ai/v1
تتبع واجهة برمجة التطبيقات اصطلاحات RESTful مع نصوص طلب واستجابة JSON. تتم المصادقة عبر رأس `api-key`.
مصادقة واجهة برمجة تطبيقات Murf AI
يتطلب كل طلب API مفتاح API الخاص بك في رؤوس الطلب. تنسيق رأس المصادقة هو:
api-key: YOUR_API_KEY
Content-Type: application/json
إليك كيف تبدو المصادقة في لغات البرمجة المختلفة:
مصادقة Python مع واجهة برمجة تطبيقات Murf AI
import requests
API_KEY = "your_murf_api_key"
BASE_URL = "https://api.murf.ai/v1"
headers = {
"api-key": API_KEY,
"Content-Type": "application/json"
}
# Test authentication by fetching available voices
response = requests.get(f"{BASE_URL}/voices", headers=headers)
if response.status_code == 200:
print("Authentication successful!")
voices = response.json()
print(f"Available voices: {len(voices)}")
else:
print(f"Authentication failed: {response.status_code}")
مصادقة JavaScript مع واجهة برمجة تطبيقات Murf AI
const API_KEY = 'your_murf_api_key';
const BASE_URL = 'https://api.murf.ai/v1';
const headers = {
'api-key': API_KEY,
'Content-Type': 'application/json'
};
// Test authentication
fetch(`${BASE_URL}/voices`, { headers })
.then(response => response.json())
.then(data => console.log('Voices available:', data.length))
.catch(error => console.error('Auth failed:', error));
مصادقة cURL مع واجهة برمجة تطبيقات Murf AI
curl -X GET "https://api.murf.ai/v1/voices" \
-H "api-key: YOUR_API_KEY" \
-H "Content-Type: application/json"
تُرجع المصادقة الناجحة رمز حالة 200. تُرجع المفاتيح غير الصالحة 401 غير مصرح به.
جلب الأصوات المتاحة باستخدام واجهة برمجة تطبيقات Murf AI
قبل إنشاء الكلام، استرجع قائمة الأصوات المتاحة لاختيار الصوت الذي يناسب حالة استخدامك. تُرجع نقطة النهاية /voices جميع الأصوات التي يمكن الوصول إليها مع بياناتها الوصفية.
سرد جميع الأصوات
import requests
API_KEY = "your_murf_api_key"
BASE_URL = "https://api.murf.ai/v1"
headers = {
"api-key": API_KEY,
"Content-Type": "application/json"
}
response = requests.get(f"{BASE_URL}/voices", headers=headers)
voices = response.json()
# Display voice information
for voice in voices[:5]: # Show first 5 voices
print(f"Name: {voice['name']}")
print(f"Voice ID: {voice['voiceId']}")
print(f"Language: {voice['language']}")
print(f"Gender: {voice['gender']}")
print(f"Accent: {voice.get('accent', 'N/A')}")
print("---")
تتضمن الاستجابة خصائص الصوت:
| الخاصية | الوصف | مثال |
|---|---|---|
| voiceId | معرف فريد للصوت | "en-US-marcus" |
| name | اسم عرض الصوت | "Marcus" |
| language | رمز اللغة | "en-US" |
| gender | جنس الصوت | "ذكر" أو "أنثى" |
| accent | اللهجة الإقليمية | "أمريكية", "بريطانية" |
| style | نمط/نبرة الصوت | "حوار", "رسمي" |
تصفية الأصوات حسب اللغة
# Filter for English voices
english_voices = [v for v in voices if v['language'].startswith('en')]
print(f"English voices available: {len(english_voices)}")
# Filter for Spanish voices
spanish_voices = [v for v in voices if v['language'].startswith('es')]
print(f"Spanish voices available: {len(spanish_voices)}")
توليد الكلام من النص
الوظيفة الأساسية لواجهة برمجة تطبيقات Murf AI هي تحويل النص إلى كلام. تقبل نقطة النهاية /speech معلمات النص والصوت، وتعيد ملفًا صوتيًا.
طلب تحويل النص إلى كلام أساسي
import requests
API_KEY = "your_murf_api_key"
BASE_URL = "https://api.murf.ai/v1"
headers = {
"api-key": API_KEY,
"Content-Type": "application/json"
}
payload = {
"text": "مرحباً بكم في تطبيقنا. تم إنشاء هذا الصوت باستخدام Murf AI.",
"voiceId": "en-US-marcus",
"format": "mp3",
"sampleRate": 24000
}
response = requests.post(
f"{BASE_URL}/speech",
headers=headers,
json=payload
)
if response.status_code == 200:
# Save the audio file
with open("output.mp3", "wb") as f:
f.write(response.content)
print("تم حفظ الصوت في output.mp3")
else:
print(f"خطأ: {response.status_code} - {response.text}")
معلمات الطلب
| المعلمة | النوع | مطلوب | الوصف |
|---|---|---|---|
| text | سلسلة نصية | نعم | النص المراد تحويله إلى كلام |
| voiceId | سلسلة نصية | نعم | معرف الصوت المراد استخدامه |
| format | سلسلة نصية | لا | تنسيق الإخراج: mp3, wav, flac (افتراضي: mp3) |
| sampleRate | عدد صحيح | لا | معدل أخذ العينات الصوتية: 8000, 16000, 24000, 48000 |
| speed | عائم | لا | سرعة التحدث: من 0.5 إلى 2.0 (افتراضي: 1.0) |
| pitch | عائم | لا | تعديل درجة الصوت: -10 إلى 10 |
تعديل سرعة الصوت ودرجته
payload = {
"text": "يتم نطق هذا النص بوتيرة أبطأ وبدرجة صوت أقل.",
"voiceId": "en-US-marcus",
"format": "mp3",
"speed": 0.8, # 80% of normal speed
"pitch": -2 # Slightly lower pitch
}
response = requests.post(f"{BASE_URL}/speech", headers=headers, json=payload)
استخدام SSML للتحكم المتقدم
توفر لغة ترميز تركيب الكلام (SSML) تحكمًا دقيقًا في النطق والتوقفات والتركيز والمزيد. تدعم واجهة برمجة تطبيقات Murf AI علامات SSML لإخراج صوت بجودة احترافية.
مثال SSML
ssml_text = """
<speak>
مرحباً بكم في <emphasis level="strong">Murf AI</emphasis>.
<break time="500ms"/>
تقنية تحويل النص إلى كلام لدينا تخلق صوتاً <prosody rate="slow">طبيعي النبرة</prosody>.
<break time="300ms"/>
كلمة <phoneme alphabet="ipa" ph="ˈdeɪtə">data</phoneme> تُنطق بشكل صحيح.
</speak>
"""
payload = {
"text": ssml_text,
"voiceId": "en-US-julia",
"format": "mp3",
"ssml": True # Enable SSML parsing
}
response = requests.post(f"{BASE_URL}/speech", headers=headers, json=payload)
علامات SSML الشائعة
| العلامة | الغرض | مثال |
|---|---|---|
<break> | إدراج وقفة | <break time="500ms"/> |
<emphasis> | التركيز على كلمة | <emphasis level="strong">مهم</emphasis> |
<prosody> | تعديل المعدل/الدرجة | <prosody rate="slow">نص</prosody> |
<phoneme> | نطق مخصص | <phoneme alphabet="ipa" ph="...">كلمة</phoneme> |
<say-as> | الاستدلال كنوع | <say-as interpret-as="date">2026-01-29</say-as> |
اختبار واجهة برمجة تطبيقات Murf AI باستخدام Apidog
قبل كتابة كود التكامل، اختبر استدعاءات API الخاصة بك بشكل تفاعلي. يوفر Apidog واجهة مرئية لصياغة الطلبات وفحص الاستجابات وتصحيح الأخطاء.

إعداد Apidog لـ Murf AI
1. قم بتنزيل وتثبيت Apidog
احصل على Apidog مجانًا. وهو يدعم أنظمة Windows و Mac و Linux ومتصفحات الويب.
2. إنشاء مشروع جديد
ابدأ مشروعًا جديدًا باسم "تكامل Murf AI". هذا يحافظ على تنظيم نقاط نهاية API الخاصة بك.
3. إعداد متغيرات البيئة
أنشئ بيئة بمفتاح API الخاص بك:
{
"baseUrl": "https://api.murf.ai/v1",
"apiKey": "your_murf_api_key"
}
تحافظ متغيرات البيئة على البيانات الحساسة منفصلة عن تكوينات الطلبات.
4. إنشاء طلبك الأول
أضف طلب POST جديدًا بهذه الإعدادات:
- عنوان URL:
{{baseUrl}}/speech - الرؤوس (Headers):
api-key:{{apiKey}}Content-Type:application/json- الجسم (JSON):
{
"text": "اختبار Murf AI API باستخدام Apidog. هذا تعليق صوتي نموذجي.",
"voiceId": "en-US-marcus",
"format": "mp3"
}
5. إرسال وفحص الاستجابة
انقر على إرسال. سيعرض Apidog حالة الاستجابة ورؤوسها ويسمح لك بتنزيل ملف الصوت الذي تم إنشاؤه مباشرة.
تصحيح الأخطاء الشائعة باستخدام Apidog
| المشكلة | كيف يساعد Apidog |
|---|---|
| 401 غير مصرح به | تحقق من رأس api-key في مفتش الطلب |
| معرف صوت غير صالح (Invalid voiceId) | استخدم GET /voices أولاً للتحقق من المعرفات المتاحة |
| استجابة صوتية فارغة | افحص رؤوس الاستجابة لرسائل الخطأ |
| حدود المعدل (Rate limiting) | راقب سجل الطلبات لرموز حالة 429 |
تتيح لك ميزة سجل الطلبات في Apidog مقارنة الطلبات الناجحة والفاشلة جنبًا إلى جنب، مما يجعل تصحيح الأخطاء أمرًا مباشرًا.
التعامل مع المحتوى طويل النموذج باستخدام واجهة برمجة تطبيقات Murf AI
بالنسبة للمقالات أو منشورات المدونات أو فصول الكتب، قد تحتاج إلى معالجة النص على شكل أجزاء. لدى Murf AI حدود أحرف لكل طلب، لذا فإن تقسيم المحتوى يضمن المعالجة الموثوقة.
استراتيجية التجزئة
import requests
API_KEY = "your_murf_api_key"
BASE_URL = "https://api.murf.ai/v1"
headers = {
"api-key": API_KEY,
"Content-Type": "application/json"
}
def chunk_text(text, max_chars=3000):
"""Split text into chunks at sentence boundaries."""
sentences = text.replace('!', '.').replace('?', '.').split('.')
chunks = []
current_chunk = ""
for sentence in sentences:
sentence = sentence.strip()
if not sentence:
continue
if len(current_chunk) + len(sentence) + 2 > max_chars:
chunks.append(current_chunk.strip())
current_chunk = sentence + ". "
else:
current_chunk += sentence + ". "
if current_chunk.strip():
chunks.append(current_chunk.strip())
return chunks
def generate_long_audio(text, voice_id, output_prefix="output"):
"""Generate audio for long-form content."""
chunks = chunk_text(text)
audio_files = []
for i, chunk in enumerate(chunks):
payload = {
"text": chunk,
"voiceId": voice_id,
"format": "mp3"
}
response = requests.post(
f"{BASE_URL}/speech",
headers=headers,
json=payload
)
if response.status_code == 200:
filename = f"{output_prefix}_{i+1}.mp3"
with open(filename, "wb") as f:
f.write(response.content)
audio_files.append(filename)
print(f"Generated: {filename}")
else:
print(f"Failed chunk {i+1}: {response.status_code}")
return audio_files
# Example usage
long_text = """
محتوى مقالتك الطويلة أو وثيقتك يذهب هنا.
يمكن أن يمتد على عدة فقرات وصفحات.
تقوم الدالة بتقسيمه تلقائيًا عند حدود الجمل.
"""
audio_files = generate_long_audio(long_text, "en-US-marcus", "article_audio")
print(f"Generated {len(audio_files)} audio files")
ربط الملفات الصوتية باستخدام واجهة برمجة تطبيقات Murf AI
بعد إنشاء الأجزاء، قم بدمجها في ملف واحد باستخدام FFmpeg أو مكتبة Python:
from pydub import AudioSegment
def concatenate_audio(file_list, output_file="final_audio.mp3"):
"""Combine multiple audio files into one."""
combined = AudioSegment.empty()
for filename in file_list:
audio = AudioSegment.from_mp3(filename)
combined += audio
combined.export(output_file, format="mp3")
print(f"تم حفظ الصوت المدمج في {output_file}")
return output_file
# Combine the chunks
concatenate_audio(audio_files, "complete_article.mp3")
أفضل ممارسات معالجة الأخطاء باستخدام واجهة برمجة تطبيقات Murf AI
تتطلب التطبيقات الإنتاجية معالجة قوية للأخطاء. تُرجع واجهة برمجة تطبيقات Murf AI رموز حالة HTTP قياسية مع رسائل خطأ وصفية.
رموز الأخطاء الشائعة
| رمز الحالة | المعنى | الحل |
|---|---|---|
| 400 | طلب سيء | تحقق من تنسيق نص الطلب والمعلمات |
| 401 | غير مصرح به | تحقق من صحة مفتاح API وكونه نشطًا |
| 403 | ممنوع | تحقق من أذونات الحساب وحدود الخطة |
| 429 | تجاوز حد المعدل | طبق التراجع الأسي |
| 500 | خطأ في الخادم | أعد المحاولة بعد تأخير قصير |
عميل API قوي
import requests
import time
from typing import Optional
class MurfAPIClient:
def __init__(self, api_key: str):
self.api_key = api_key
self.base_url = "https://api.murf.ai/v1"
self.headers = {
"api-key": api_key,
"Content-Type": "application/json"
}
def _request(self, method: str, endpoint: str,
data: dict = None, retries: int = 3) -> Optional[requests.Response]:
"""Make API request with retry logic."""
url = f"{self.base_url}/{endpoint}"
for attempt in range(retries):
try:
if method == "GET":
response = requests.get(url, headers=self.headers)
else:
response = requests.post(url, headers=self.headers, json=data)
if response.status_code == 200:
return response
elif response.status_code == 429:
# Rate limited - wait and retry
wait_time = 2 ** attempt
print(f"Rate limited. Waiting {wait_time}s...")
time.sleep(wait_time)
elif response.status_code >= 500:
# Server error - retry
time.sleep(1)
else:
# Client error - don't retry
print(f"Error {response.status_code}: {response.text}")
return None
except requests.RequestException as e:
print(f"Request failed: {e}")
time.sleep(1)
return None
def get_voices(self) -> list:
"""Fetch available voices."""
response = self._request("GET", "voices")
return response.json() if response else []
def generate_speech(self, text: str, voice_id: str,
format: str = "mp3", **kwargs) -> Optional[bytes]:
"""Generate speech from text."""
payload = {
"text": text,
"voiceId": voice_id,
"format": format,
**kwargs
}
response = self._request("POST", "speech", payload)
return response.content if response else None
# Usage
client = MurfAPIClient("your_api_key")
voices = client.get_voices()
audio = client.generate_speech(
"Hello world!",
"en-US-marcus",
speed=1.0
)
if audio:
with open("output.mp3", "wb") as f:
f.write(audio)
بناء خدمة توليد تعليقات صوتية
دعنا نبني واجهة برمجة تطبيقات Flask كاملة تغلف Murf AI لتطبيقاتك:
from flask import Flask, request, jsonify, send_file
import requests
import os
import uuid
app = Flask(__name__)
MURF_API_KEY = os.environ.get("MURF_API_KEY")
MURF_BASE_URL = "https://api.murf.ai/v1"
headers = {
"api-key": MURF_API_KEY,
"Content-Type": "application/json"
}
@app.route("/api/voices", methods=["GET"])
def list_voices():
"""List available voices."""
language = request.args.get("language")
response = requests.get(f"{MURF_BASE_URL}/voices", headers=headers)
if response.status_code != 200:
return jsonify({"error": "Failed to fetch voices"}), 500
voices = response.json()
if language:
voices = [v for v in voices if v["language"].startswith(language)]
return jsonify(voices)
@app.route("/api/synthesize", methods=["POST"])
def synthesize():
"""Generate speech from text."""
data = request.json
if not data or "text" not in data:
return jsonify({"error": "Missing 'text' field"}), 400
if "voiceId" not in data:
return jsonify({"error": "Missing 'voiceId' field"}), 400
payload = {
"text": data["text"],
"voiceId": data["voiceId"],
"format": data.get("format", "mp3"),
"speed": data.get("speed", 1.0),
"pitch": data.get("pitch", 0)
}
response = requests.post(
f"{MURF_BASE_URL}/speech",
headers=headers,
json=payload
)
if response.status_code != 200:
return jsonify({"error": "Speech generation failed"}), 500
# Save to temp file
filename = f"audio_{uuid.uuid4().hex}.mp3"
filepath = os.path.join("/tmp", filename)
with open(filepath, "wb") as f:
f.write(response.content)
return send_file(
filepath,
mimetype="audio/mpeg",
as_attachment=True,
download_name=filename
)
if __name__ == "__main__":
app.run(debug=True, port=5000)
تعرض هذه الخدمة نقطتي نهاية: واحدة لسرد الأصوات والأخرى لتوليد الكلام. يمكنك توسيعها باستخدام التخزين المؤقت والمصادقة والمعالجة القائمة على قائمة الانتظار للاستخدام الإنتاجي.
حدود المعدل واعتبارات التسعير لواجهة برمجة تطبيقات Murf AI
يفرض Murf AI حدود معدل بناءً على خطة اشتراكك. يساعد فهم هذه الحدود في تصميم تطبيقات فعالة.

تحسين استخدام واجهة برمجة التطبيقات
- التخزين المؤقت للصوت المُنشأ - تخزين النتائج للطلبات المتكررة
- تجميع الطلبات المتشابهة - دمج النصوص القصيرة عندما يكون ذلك ممكنًا
- استخدام معدلات عينة أقل - 16000 هرتز يعمل جيدًا لمحتوى الصوت
- المراقبة باستخدام Apidog - تتبع أنماط الاستخدام والتحسين
التكامل مع الأطر الشائعة
تكامل Node.js
const axios = require('axios');
const fs = require('fs');
const API_KEY = process.env.MURF_API_KEY;
const BASE_URL = 'https://api.murf.ai/v1';
async function generateSpeech(text, voiceId, options = {}) {
try {
const response = await axios.post(
`${BASE_URL}/speech`,
{
text,
voiceId,
format: options.format || 'mp3',
speed: options.speed || 1.0,
pitch: options.pitch || 0
},
{
headers: {
'api-key': API_KEY,
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
}
);
return Buffer.from(response.data);
} catch (error) {
console.error('Error:', error.response?.data || error.message);
throw error;
}
}
// Usage
(async () => {
const audio = await generateSpeech(
'مرحباً من Node.js!',
'en-US-marcus'
);
fs.writeFileSync('output.mp3', audio);
console.log('تم حفظ الصوت!');
})();
تكامل React للواجهة الأمامية
import React, { useState } from 'react';
function VoiceGenerator() {
const [text, setText] = useState('');
const [voiceId, setVoiceId] = useState('en-US-marcus');
const [audioUrl, setAudioUrl] = useState(null);
const [loading, setLoading] = useState(false);
const generateAudio = async () => {
setLoading(true);
try {
const response = await fetch('/api/synthesize', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text, voiceId })
});
const blob = await response.blob();
const url = URL.createObjectURL(blob);
setAudioUrl(url);
} catch (error) {
console.error('فشل التوليد:', error);
} finally {
setLoading(false);
}
};
return (
<div className="voice-generator">
<textarea
value={text}
onChange={(e) => setText(e.target.value)}
placeholder="أدخل النص لتحويله إلى كلام..."
/>
<select value={voiceId} onChange={(e) => setVoiceId(e.target.value)}>
<option value="en-US-marcus">ماركوس (ذكر أمريكي)</option>
<option value="en-US-julia">جوليا (أنثى أمريكية)</option>
<option value="en-GB-oliver">أوليفر (ذكر بريطاني)</option>
</select>
<button onClick={generateAudio} disabled={loading}>
{loading ? 'جاري التوليد...' : 'توليد الصوت'}
</button>
{audioUrl && (
<audio controls src={audioUrl}>
متصفحك لا يدعم تشغيل الصوت.
</audio>
)}
</div>
);
}
export default VoiceGenerator;
الخلاصة
تفتح واجهة برمجة تطبيقات Murf AI إمكانيات قوية لتحويل النص إلى كلام للمطورين. من التعليقات الصوتية البسيطة إلى الإنتاجات المعقدة متعددة الأصوات، تتعامل واجهة برمجة التطبيقات مع متطلبات متنوعة مع إخراج صوت طبيعي. النقاط الرئيسية:
- المصادقة - استخدم مفاتيح API في رؤوس الطلب لجميع الاستدعاءات
- اختيار الصوت - استكشف أكثر من 120 صوتًا عبر اللغات واللهجات
- التخصيص - اضبط السرعة والدرجة واستخدم SSML للتحكم الدقيق
- معالجة الأخطاء - طبق المحاولات المتكررة والتراجع الأسي للإنتاج
- الاختبار - استخدم Apidog لتصحيح الأخطاء وتحسين تكاملك
ابدأ بالطبقة المجانية للتجربة، ثم قم بالتوسع مع نمو تطبيقك. إن الجمع بين الأصوات عالية الجودة وتصميم واجهة برمجة تطبيقات صديقة للمطورين يجعل Murf AI خيارًا قويًا للتطبيقات التي تدعم الصوت.
هل أنت مستعد للبناء؟ قم بتنزيل Apidog لاختبار استدعاءات Murf AI API الخاصة بك وتبسيط سير عمل التطوير لديك.
