در این پروژه یک وباپلیکیشن ثبتنام هوشمند مسافر طراحی و پیادهسازی شد که کاربر میتواند اطلاعات خود را بهصورت صوتی بیان کند و سیستم بهصورت خودکار اطلاعات موردنیاز را استخراج و در فرم ثبتنام وارد کند.
معرفی پروژه
این پروژه یک وباپلیکیشن هوشمند ثبتنام مسافر است که با استفاده از پردازش صوت و هوش مصنوعی، اطلاعات هویتی مسافر را از گفتار استخراج کرده و فرم ثبتنام را بهصورت خودکار تکمیل میکند.
کاربر کافی است دکمه ضبط را فعال کرده و اطلاعاتی مانند نام و نام خانوادگی، تاریخ تولد و کد ملی را بیان کند. سیستم صوت دریافتشده را پردازش کرده و اطلاعات استخراجشده را در فیلدهای مربوطه قرار میدهد.
نحوه عملکرد
فرآیند ثبت اطلاعات به این صورت انجام میشود:
- کاربر وارد بخش ثبتنام صوتی میشود.
- ضبط صدا از طریق مرورگر آغاز میشود.
- کاربر اطلاعات مسافر را بیان میکند.
- فایل صوتی از طریق API به سرور ارسال میشود.
- صوت مستقیماً برای مدل هوش مصنوعی ارسال میشود.
- اطلاعات موردنظر از گفتار استخراج میشود.
- نتیجه بهصورت JSON دریافت میشود.
- فرم ثبتنام بهصورت خودکار تکمیل میشود.
- اطلاعات مسافر در لیست ثبتشده نمایش داده میشود.
اطلاعات استخراجشده
سیستم سه مقدار اصلی را از گفتار استخراج میکند:
- نام و نام خانوادگی با حروف فارسی
- تاریخ تولد با فرمت
YYYY/MM/DD - کد ملی بهصورت عددی
معماری سیستم
معماری پروژه بهصورت زیر طراحی شده است:
Browser → Flask API → Gemini 2.5 Flash → Structured JSON → Form
مرورگر با استفاده از MediaRecorder صدای کاربر را دریافت کرده و آن را در قالب فایل صوتی ارسال میکند.
در سمت سرور، Flask درخواست را دریافت کرده و فایل صوتی را مستقیماً به مدل چندرسانهای ارسال میکند.
استفاده از مدل چندرسانهای
در این پروژه برای کاهش مراحل پردازش، صوت مستقیماً به مدل چندرسانهای ارسال میشود و نیازی به اجرای یک سرویس STT جداگانه قبل از استخراج اطلاعات وجود ندارد.
این روش باعث میشود فرآیند پردازش سادهتر شده و تعداد رفتوبرگشتهای موردنیاز کاهش پیدا کند.
خروجی ساختاریافته
برای کنترل ساختار پاسخ مدل، خروجی بهصورت JSON ساختاریافته دریافت میشود.
نمونه خروجی:
{"status":"success","data":{"full_name":"امیرمحمد یوسفی مهر","birth_date":"1375/02/12","national_id":"0012345678"}}
استفاده از ساختار مشخص برای خروجی باعث میشود اطلاعات استخراجشده مستقیماً در فیلدهای فرم قابل استفاده باشد.
رابط کاربری
رابط کاربری پروژه بهصورت RTL و مناسب زبان فارسی طراحی شده است.
امکانات رابط شامل:
- ثبت اطلاعات بهصورت دستی
- ثبت اطلاعات با صدا
- ضبط صدا از طریق مرورگر
- نمایش وضعیت ضبط
- نمایش وضعیت پردازش
- پرکردن خودکار فرم
- نمایش نشان AI برای فیلدهای استخراجشده
- ثبت و نمایش لیست مسافران
API
پروژه دارای API برای پردازش فایل صوتی است.
POST /api/process-audio
این endpoint فایل صوتی را با استفاده از multipart/form-data دریافت کرده و اطلاعات استخراجشده را بهصورت JSON برمیگرداند.
GET /health
برای بررسی سلامت سرویس استفاده میشود و در حالت عادی پاسخ زیر را برمیگرداند:
{"status":"ok"}
ذخیرهسازی
برای نسخه فعلی پروژه، اطلاعات لیست مسافران در کوکی مرورگر ذخیره میشود و برای ذخیره اطلاعات نیازی به پایگاه داده وجود ندارد.
نسخه نمایشی
پروژه دارای یک نسخه Demo نیز است که بدون اتصال به سرویس هوش مصنوعی اجرا میشود و برای نمایش و تست رابط کاربری مناسب است.
امنیت و استقرار
در مستندات پروژه، موارد امنیتی و استقرار نیز در نظر گرفته شدهاند؛ از جمله:
- انتقال کلیدهای API به متغیرهای محیطی
- جلوگیری از قرار دادن کلیدهای حساس در سورس
- غیرفعالکردن
debug=Trueدر محیط Production - اجرای برنامه با WSGI Serverهایی مانند
GunicornیاWaitress
نتیجه پروژه
نتیجه، یک سیستم ثبتنام صوتی است که میتواند فرآیند ورود اطلاعات مسافر را سادهتر کرده و با تبدیل گفتار به دادههای ساختاریافته، نیاز به ورود دستی اطلاعات را کاهش دهد.
ساختار API و معماری پروژه نیز امکان اتصال سیستم به سایر نرمافزارها و سرویسهای سازمانی را فراهم میکند.