توضیحات متا (Meta Description):
آموزش کامل ساخت دستیار صوتی هوشمند با Whisper و GPT: راهنمای جامع پیادهسازی، کدنویسی و شخصیسازی دستیار صوتی با هوش مصنوعی. ساخت دستیار صوتی فارسی و انگلیسی.
مقدمه: انقلاب دستیارهای صوتی هوشمند
تصور کنید یک دستیار شخصی داشته باشید که نه تنها به تمام سوالات شما پاسخ میدهد، بلکه میتواند با صدای طبیعی با شما صحبت کند، یادداشتهای شما را بنویسد، ایمیلهایتان را بررسی کند و حتی خلاقانه داستان بسازد. این دیگر یک رویای علمی-تخیلی نیست! با پیشرفتهای چشمگیر در حوزه هوش مصنوعی، به ویژه مدلهای Whisper و GPT شرکت OpenAI، حالا هر کسی میتواند یک دستیار صوتی شخصی و هوشمند برای خودش بسازد.
در این مقاله جامع، قدم به قدم به شما آموزش میدهیم چگونه با استفاده از Whisper برای تشخیص گفتار و GPT برای تولید پاسخهای هوشمند، یک دستیار صوتی کامل بسازید که میتواند به زبان فارسی و انگلیسی با شما تعامل داشته باشد. این پروژه نه تنها یک ابزار کاربردی برای استفاده شخصی است، بلکه میتواند نقطه شروعی برای ساخت محصولات تجاری در حوزه هوش مصنوعی باشد.
معرفی تکنولوژیهای مورد نیاز
قبل از شروع کدنویسی، بهتر است با تکنولوژیهای اصلی که در این پروژه استفاده میکنیم آشنا شویم:
OpenAI Whisper: سیستم تشخیص گفتار پیشرفته
Whisper یک سیستم تشخیص گفتار است که توسط OpenAI توسعه داده شده و میتواند صوت را به متن تبدیل کند. این مدل از چندین زبان از جمله فارسی پشتیبانی میکند و دقت بسیار بالایی دارد.
OpenAI GPT: مدل زبانی پیشرفته
GPT (مخفف Generative Pre-trained Transformer) یک مدل زبانی قدرتمند است که میتواند متنهای طبیعی و连贯 تولید کند. این مدل میتواند به سوالات پاسخ دهد، متن بنویسد، کد تولید کند و کارهای زبانی پیچیده دیگری انجام دهد.
سایر کتابخانههای مورد نیاز
برای کامل کردن پروژه به کتابخانههای زیر نیز نیاز داریم:
- PyAudio: برای ضبط صدا از میکروفون
- SpeechRecognition: برای کار با صوت و میکروفون
- gTTS (Google Text-to-Speech): برای تبدیل متن به صوت
- OpenAI API: برای دسترسی به مدلهای Whisper و GPT
- Flask/FastAPI: برای ساخت رابط وب (اختیاری)
مرحله ۱: نصب و راهاندازی محیط توسعه
قبل از شروع کدنویسی، باید محیط توسعه خود را آماده کنید. در این آموزش از پایتون استفاده میکنیم.
نصب کتابخانههای لازم
با استفاده از pip کتابخانههای مورد نیاز را نصب کنید:
pip install openai
pip install speechrecognition
pip install pyaudio
pip install gtts
pip install pygame
pip install flask
دریافت API Key از OpenAI
برای استفاده از سرویسهای OpenAI باید یک کلید API دریافت کنید:
- به سایت platform.openai.com بروید
- حساب کاربری ایجاد کنید یا وارد شوید
- به بخش API Keys بروید
- یک کلید جدید ایجاد کنید و آن را در جای امن ذخیره کنید
مرحله ۲: ساخت ماژول تشخیص گفتار با Whisper
در این مرحله، ماژولی میسازیم که بتواند صوت را از میکروفون دریافت کرده و به متن تبدیل کند.
کد تشخیص گفتار
کد زیر را در یک فایل به نام speech_to_text.py ذخیره کنید:
import speech_recognition as sr
import openai
# تنظیم کلید API
openai.api_key = 'your-api-key-here'
def record_audio():
recognizer = sr.Recognizer()
microphone = sr.Microphone()
with microphone as source:
print("در حال گوش دادن...")
recognizer.adjust_for_ambient_noise(source)
audio = recognizer.listen(source)
try:
# استفاده از Whisper برای تشخیص گفتار
print("در حال پردازش...")
with open("audio.wav", "wb") as f:
f.write(audio.get_wav_data())
with open("audio.wav", "rb") as audio_file:
transcript = openai.Audio.transcribe(
"whisper-1",
audio_file,
language="fa" # برای تشخیص زبان فارسی
)
return transcript["text"]
except Exception as e:
print(f"خطا در تشخیص گفتار: {e}")
return None
توضیح کد
این کد چه کاری انجام میدهد:
- صدای کاربر را از میکروفون ضبط میکند
- صدای ضبط شده را در یک فایل ذخیره میکند
- فایل صوتی را به Whisper ارسال میکند
- متن تبدیل شده را بازمیگرداند
- از زبان فارسی پشتیبانی میکند
مرحله ۳: ساخت ماژول تولید پاسخ با GPT
حالا ماژولی میسازیم که بتواند به سوالات کاربر پاسخ هوشمندانه بدهد.
کد تولید پاسخ
کد زیر را در یک فایل به نام text_to_response.py ذخیره کنید:
import openai
def get_gpt_response(user_input, conversation_history=[]):
# اضافه کردن سوال جدید به تاریخچه مکالمه
conversation_history.append({"role": "user", "content": user_input})
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant that responds in the same language as the user."},
*conversation_history
],
max_tokens=500,
temperature=0.7
)
assistant_response = response.choices[0].message.content
# اضافه کردن پاسخ دستیار به تاریخچه مکالمه
conversation_history.append({"role": "assistant", "content": assistant_response})
return assistant_response, conversation_history
except Exception as e:
print(f"خطا در دریافت پاسخ از GPT: {e}")
return "متأسفانه در پردازش درخواست شما مشکلی پیش آمده است.", conversation_history
توضیح کد
این کد چه ویژگیهایی دارد:
- از مدل GPT-3.5-turbo استفاده میکند (مقرون به صرفه و سریع)
- تاریخچه مکالمه را نگهداری میکند برای پاسخهای连贯تر
- به زبان کاربر پاسخ میدهد (فارسی یا انگلیسی)
- محدودیت توکن برای کنترل طول پاسخ دارد
- خطاها را به درستی مدیریت میکند
مرحله ۴: ساخت ماژول تبدیل متن به گفتار
برای کامل کردن چرخه تعامل، باید پاسخ متنی GPT را به صوت تبدیل کنیم.
کد تبدیل متن به گفتار
کد زیر را در یک فایل به نام text_to_speech.py ذخیره کنید:
from gtts import gTTS
import pygame
import io
import os
def text_to_speech(text, lang='fa'):
try:
# ایجاد فایل صوتی از متن
tts = gTTS(text=text, lang=lang, slow=False)
# ذخیره در حافظه به جای فایل
audio_bytes = io.BytesIO()
tts.write_to_fp(audio_bytes)
audio_bytes.seek(0)
# پخش صوت
pygame.mixer.init()
pygame.mixer.music.load(audio_bytes)
pygame.mixer.music.play()
# منتظر ماندن تا پخش تمام شود
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)
except Exception as e:
print(f"خطا در تبدیل متن به گفتار: {e}")
توضیح کد
این ماژول چه قابلیتهایی دارد:
- از Google Text-to-Speech استفاده میکند
- از زبان فارسی پشتیبانی میکند
- فایل صوتی را در حافظه ایجاد میکند (نیاز به ذخیره فایل نیست)
- صوت را بلافاصله پخش میکند
- تا پایان پخش صوت منتظر میماند
مرحله ۵: یکپارچهسازی و ساخت دستیار کامل
حالا تمام ماژولها را با هم ترکیب میکنیم تا دستیار صوتی کامل ما ساخته شود.
کد اصلی دستیار صوتی
کد زیر را در یک فایل به نام voice_assistant.py ذخیره کنید:
from speech_to_text import record_audio
from text_to_response import get_gpt_response
from text_to_speech import text_to_speech
import time
class VoiceAssistant:
def __init__(self):
self.conversation_history = []
self.is_listening = False
def start_listening(self):
self.is_listening = True
print("دستیار صوتی فعال شد. برای خروج بگویید 'خداحافظ'")
while self.is_listening:
# ضبط صوت کاربر
user_text = record_audio()
if user_text:
print(f"شما: {user_text}")
# بررسی فرمان خروج
if "خداحافظ" in user_text.lower() or "خدا حافظ" in user_text.lower():
self.stop_listening()
break
# دریافت پاسخ از GPT
response, self.conversation_history = get_gpt_response(user_text, self.conversation_history)
print(f"دستیار: {response}")
# تبدیل پاسخ به صوت و پخش آن
text_to_speech(response)
def stop_listening(self):
self.is_listening = False
print("دستیار صوتی غیرفعال شد.")
if __name__ == "__main__":
assistant = VoiceAssistant()
assistant.start_listening()
توضیح کد اصلی
این کلاس اصلی دستیار صوتی ما است که:
- حالت گوش دادن را مدیریت میکند
- تاریخچه مکالمه را نگهداری میکند
- فرمان خروج را تشخیص میدهد
- تمامی ماژولها را یکپارچه میکند
- یک چرخه کامل تعامل صوتی ایجاد میکند
مرحله ۶: شخصیسازی و بهبود دستیار
حالا که دستیار پایه ما کار میکند، میتوانیم آن را بهبود بخشیده و شخصیسازی کنیم.
افزودن قابلیتهای پیشرفته
میتوانید قابلیتهای زیر را به دستیار خود اضافه کنید:
- تشخیص احساسات: تحلیل لحن صدا و تطبیق پاسخ با احساس کاربر
- کنترل دستگاههای خانگی: یکپارچهسازی با IoT برای کنترل خانه هوشمند
- یادگیری ترجیحات کاربر: ذخیره ترجیحات کاربر و شخصیسازی پاسخها
- پشتیبانی از چندین زبان: تشخیص خودکار زبان و پاسخ به همان زبان
- قابلیت انجام وظایف خاص: تنظیم آلارم، یادآوری، جستجوی اطلاعات
کد نمونه برای کنترل دستگاههای خانگی
این کد نمونه نشان میدهد چگونه میتوانید دستیار را برای کنترل دستگاههای خانگی گسترش دهید:
def handle_smart_home_commands(command):
command = command.lower()
if "چراغ" in command and "روشن" in command:
# کد برای روشن کردن چراغ
return "چراغ روشن شد"
elif "چراغ" in command and "خاموش" in command:
# کد برای خاموش کردن چراغ
return "چراغ خاموش شد"
elif "دما" in command:
# کد برای خواندن دمای محیط
return "دمای اتاق ۲۲ درجه سانتیگراد است"
else:
return None
# اضافه کردن این تابع به دستیار اصلی
def enhanced_get_response(user_input, conversation_history):
# ابتدا بررسی میکنیم آیا دستور مربوط به خانه هوشمند است
smart_home_response = handle_smart_home_commands(user_input)
if smart_home_response:
return smart_home_response, conversation_history
else:
# در غیر این صورت از GPT استفاده میکنیم
return get_gpt_response(user_input, conversation_history)
مرحله ۷: ساخت رابط کاربری وب
برای دسترسی راحتتر به دستیار، میتوانید یک رابط کاربری وب برای آن بسازید.
کد نمونه با Flask
یک اپلیکیشن وب ساده با Flask ایجاد کنید:
from flask import Flask, render_template, request, jsonify
from voice_assistant import VoiceAssistant
import threading
app = Flask(__name__)
assistant = VoiceAssistant()
@app.route('/')
def index():
return render_template('index.html')
@app.route('/start_listening', methods=['POST'])
def start_listening():
# اجرای دستیار در یک thread جداگانه
thread = threading.Thread(target=assistant.start_listening)
thread.daemon = True
thread.start()
return jsonify({"status": "started"})
@app.route('/stop_listening', methods=['POST'])
def stop_listening():
assistant.stop_listening()
return jsonify({"status": "stopped"})
if __name__ == '__main__':
app.run(debug=True)
کد HTML برای رابط کاربری
یک فایل index.html در پوشه templates ایجاد کنید:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8">
<title>دستیار صوتی هوشمند</title>
<style>
body { font-family: Arial, sans-serif; text-align: center; padding: 50px; }
button { padding: 15px 30px; font-size: 18px; margin: 10px; cursor: pointer; }
.listening { background-color: #ff4444; color: white; }
</style>
</head>
<body>
<h1>دستیار صوتی هوشمند</h1>
<button id="startBtn" onclick="startListening()">شروع گوش دادن</button>
<button id="stopBtn" onclick="stopListening()" disabled>توقف گوش دادن</button>
<div id="status">دستیار آماده است</div>
<script>
function startListening() {
fetch('/start_listening', { method: 'POST' })
.then(response => response.json())
.then(data => {
document.getElementById('startBtn').disabled = true;
document.getElementById('stopBtn').disabled = false;
document.getElementById('status').textContent = 'در حال گوش دادن...';
document.getElementById('status').className = 'listening';
});
}
function stopListening() {
fetch('/stop_listening', { method: 'POST' })
.then(response => response.json())
.then(data => {
document.getElementById('startBtn').disabled = false;
document.getElementById('stopBtn').disabled = true;
document.getElementById('status').textContent = 'دستیار آماده است';
document.getElementById('status').className = '';
});
}
</script>
</body>
</html>
نکات مهم برای توسعه و بهبود
برای تبدیل این پروژه به یک محصول تجاری یا بهبود آن، این نکات را در نظر بگیرید:
بهینهسازی عملکرد
- استفاده از مدلهای سبکتر برای اجرا روی دستگاههای ضعیفتر
- کش کردن پاسخهای متداول برای کاهش درخواستهای API
- استفاده از مدلهای محلی برای کاهش وابستگی به اینترنت
- بهینهسازی مصرف حافظه و پردازنده
امنیت و حریم خصوصی
- رمزنگاری دادههای صوتی ذخیره شده
- استفاده از احراز هویت برای دسترسی به دستیار
- حذف خودکار دادههای قدیمی
- رعایت قوانین حریم خصوصی دادهها
قابلیتهای تجاری
- یکپارچهسازی با سیستمهای CRM
- پشتیبانی از چندین کاربر با پروفایلهای جداگانه
- گزارشگیری و تحلیل استفاده کاربران
- قابلیت سفارشیسازی برای صنایع مختلف
سخن پایانی: آینده در دستان شماست
ساخت دستیار صوتی با Whisper و GPT نه تنها یک پروژه جذاب برنامهنویسی است، بلکه پنجرهای به آینده تعامل انسان با کامپیوتر میباشد. با مهارتهایی که در این آموزش کسب کردید، حالا میتوانید ایدههای خود را به واقعیت تبدیل کنید و محصولات هوشمندی بسازید که زندگی مردم را سادهتر کنند.
به یاد داشته باشید که این تنها شروع راه است. هوش مصنوعی به سرعت در حال پیشرفت است و فرصتهای جدیدی هر روز ایجاد میشوند. با ادامه یادگیری و آزمایش ایدههای جدید، میتوانید در این حوزه پیشرو باشید و سهمی در شکلدهی به آینده فناوری داشته باشید.
همین امروز اولین دستیار صوتی خود را بسازید و وارد دنیای هوش مصنوعی شوید!
بازگشت به صفحه اصلی