شرکت OpenAI به تازگی از APIهای جدید برای مدلهای هوش مصنوعی صوتی خود به نامهای gpt-4o-transcribe، gpt-4o-mini-transcribe و gpt-4o-mini-tts رونمایی کرده است. این مدلها از طریق API و وبسایت آزمایشی OpenAI.fm در دسترس هستند.
ویژگیهای کلیدی این مدلها:
* قابلیت تنظیم صدا: کاربران میتوانند صدای هوش مصنوعی را مطابق میل خود تنظیم کنند، از جمله لهجه، لحن و احساسات. این امکان به کاربران اجازه میدهد تا صدایی منحصر به فرد برای هوش مصنوعی خود انتخاب کنند.
* دقت بالا در تبدیل گفتار به متن: این مدلها دقت بالایی در تبدیل گفتار به متن و تشخیص صدا، به ویژه در محیطهای پر سر و صدا و با لهجههای مختلف، دارند. همچنین از بیش از 100 زبان، از جمله فارسی، پشتیبانی میکنند.
* کاربرد در مراکز تماس و دستیارهای صوتی: انتظار میرود این مدلها به طور گسترده در مراکز تماس و دستیارهای صوتی مورد استفاده قرار گیرند.
https://www.openai.fm/
ویژگیهای کلیدی این مدلها:
* قابلیت تنظیم صدا: کاربران میتوانند صدای هوش مصنوعی را مطابق میل خود تنظیم کنند، از جمله لهجه، لحن و احساسات. این امکان به کاربران اجازه میدهد تا صدایی منحصر به فرد برای هوش مصنوعی خود انتخاب کنند.
* دقت بالا در تبدیل گفتار به متن: این مدلها دقت بالایی در تبدیل گفتار به متن و تشخیص صدا، به ویژه در محیطهای پر سر و صدا و با لهجههای مختلف، دارند. همچنین از بیش از 100 زبان، از جمله فارسی، پشتیبانی میکنند.
* کاربرد در مراکز تماس و دستیارهای صوتی: انتظار میرود این مدلها به طور گسترده در مراکز تماس و دستیارهای صوتی مورد استفاده قرار گیرند.
https://www.openai.fm/
www.openai.fm
An interactive demo for developers to try the new text-to-speech model in the OpenAI API
Byteforge / بایــت فورج 🛸
شرکت OpenAI به تازگی از APIهای جدید برای مدلهای هوش مصنوعی صوتی خود به نامهای gpt-4o-transcribe، gpt-4o-mini-transcribe و gpt-4o-mini-tts رونمایی کرده است. این مدلها از طریق API و وبسایت آزمایشی OpenAI.fm در دسترس هستند. ویژگیهای کلیدی این مدلها: *…
این قسمت رو حالات صدا رو عوض میکنه مثلا ناراحت و غمگین ، شاد و ...
Forwarded from localhost
جمهوریاسلامی فعالیت مجموعه «الکترو» که دیاناس رایگان دراختیار گیمرا میذاشت رو توقیف کرد!
localhost
جمهوریاسلامی فعالیت مجموعه «الکترو» که دیاناس رایگان دراختیار گیمرا میذاشت رو توقیف کرد!
به به چه سعادتی
مشعشع شدیم 😂😂🤦♂
مشعشع شدیم 😂😂🤦♂
Forwarded from sasan safari
چگونه از Element Tree در فلاتر برای بهینهسازی UI استفاده کنیم؟
فلاتر از دو درخت اصلی برای نمایش UI استفاده میکند:
Widget Tree → ساختار توصیفی UI
Element Tree → نگهدارنده واقعی ویجتها در حافظه
چرا Element Tree مهم است؟
🧩 وقتی فلاتر ویجتها را بازسازی میکند، تمام Widget Tree دوباره ساخته میشود، اما Element Tree فقط در صورت نیاز تغییر میکند.
اگر بتوانید ویجتهای خود را طوری طراحی کنید که Element Tree ثابت بماند، عملکرد برنامه بهبود مییابد.
بهینهسازی Element Tree:
۱. استفاده از const در ویجتهای بدون تغییر
🚀 وقتی ویجتی مقدار ثابتی دارد، از const استفاده کنید. این باعث میشود که فلاتر همان نمونه را مجدداً استفاده کند.
بدون const (بازسازی غیرضروری):
۲. استفاده از Key برای حفظ Element Tree بین تغییرات
🔑 فلاتر وقتی لیستی از ویجتها را بازسازی میکند، اگر Key نداشته باشند، ممکن است Element Tree را بیدلیل تغییر دهد.
بدون Key (ریبیلد کامل هر آیتم):
۳. استفاده از ListView.builder به جای ListView ساده
📱 وقتی تعداد زیادی ویجت در لیست دارید، استفاده از ListView معمولی باعث میشود همه آیتمها همزمان ساخته شوند.
ListView.builder فقط آیتمهایی را که در صفحه نمایش داده میشوند، میسازد و بقیه را حذف میکند.
بدون builder (مشکل حافظه و کاهش سرعت):
👨🚀ساسان صفری
#مقاله #فلاتر
فلاتر از دو درخت اصلی برای نمایش UI استفاده میکند:
Widget Tree → ساختار توصیفی UI
Element Tree → نگهدارنده واقعی ویجتها در حافظه
چرا Element Tree مهم است؟
🧩 وقتی فلاتر ویجتها را بازسازی میکند، تمام Widget Tree دوباره ساخته میشود، اما Element Tree فقط در صورت نیاز تغییر میکند.
اگر بتوانید ویجتهای خود را طوری طراحی کنید که Element Tree ثابت بماند، عملکرد برنامه بهبود مییابد.
بهینهسازی Element Tree:
۱. استفاده از const در ویجتهای بدون تغییر
🚀 وقتی ویجتی مقدار ثابتی دارد، از const استفاده کنید. این باعث میشود که فلاتر همان نمونه را مجدداً استفاده کند.
بدون const (بازسازی غیرضروری):
با const (حفظ Element در حافظه):
Widget build(BuildContext context) { return const Text("Hello, Flutter!"); // فقط یک بار ساخته میشود. }
۲. استفاده از Key برای حفظ Element Tree بین تغییرات
🔑 فلاتر وقتی لیستی از ویجتها را بازسازی میکند، اگر Key نداشته باشند، ممکن است Element Tree را بیدلیل تغییر دهد.
بدون Key (ریبیلد کامل هر آیتم):
با Key (حفظ Element Tree برای هر آیتم):
ListView.builder( itemBuilder: (context, index) { return ListTile( key: ValueKey(index), // این باعث میشود آیتمها بازسازی غیرضروری نشوند noscript: Text("Item $index"), ); }, );
۳. استفاده از ListView.builder به جای ListView ساده
📱 وقتی تعداد زیادی ویجت در لیست دارید، استفاده از ListView معمولی باعث میشود همه آیتمها همزمان ساخته شوند.
ListView.builder فقط آیتمهایی را که در صفحه نمایش داده میشوند، میسازد و بقیه را حذف میکند.
بدون builder (مشکل حافظه و کاهش سرعت):
با builder (افزایش کارایی):
ListView.builder( itemCount: 1000, itemBuilder: (context, index) => Text("Item $index"), );
👨🚀ساسان صفری
#مقاله #فلاتر
Telegram
sasan safari
چنل شخصی تخصصی، از مهندسی نرم افزار، برنامه نویسی کراس پلتفورم و موبایل محتوا تقدیم میکنم.
حریم خصوصی مؤلفه چرت و بی معنی هستش تو عصر data خودتونو سفت بچسپین 😄🙋♂
Skala
Hani Mojtahedy
Beriaa Mallekm haboo perr bowaya la xorataaw
#stream in dart
توابع و خواص کلیدی استریم در دارت
StreamController()
یک متود سازنده برای ایجاد یک StreamController جدید است.
add()
برای ارسال داده های جدید به Stream استفاده می شود.
Stream
یک Getter است که یک Stream جدید باز می گرداند.
Sink
یک Getter است که Sink مربوط به StreamController را باز می گرداند.
close()
برای بستن StreamController استفاده می شود. این عمل باعث می شود تا دیگر نتوان داده ای به Stream فرستاد.
addError()
برای افزودن یک خطای خاص به Stream استفاده می شود.
hasListener
یک Getter است که بررسی می کند که آیا یک Listener فعال برای Stream وجود دارد یا خیر.
isClosed
یک Getter است که بررسی می کند که آیا StreamController بسته شده است یا خیر.
isPaused
یک Getter است که بررسی می کند که آیا StreamController متوقف شده است یا خیر.
onPause
یک Callback است که برای توقف Stream استفاده می شود.
onResume
یک Callback است که برای ادامه دادن Stream بعد از توقف استفاده می شود.
با استفاده از این توابع، شما می توانید Stream خود را به راحتی مدیریت کنید و داده های جدید را به آن اضافه کنید، خطاها را به آن اضافه کنید و Stream را بسته و یا توقف کنید.
#daily_content
توابع و خواص کلیدی استریم در دارت
StreamController()
یک متود سازنده برای ایجاد یک StreamController جدید است.
add()
برای ارسال داده های جدید به Stream استفاده می شود.
Stream
یک Getter است که یک Stream جدید باز می گرداند.
Sink
یک Getter است که Sink مربوط به StreamController را باز می گرداند.
close()
برای بستن StreamController استفاده می شود. این عمل باعث می شود تا دیگر نتوان داده ای به Stream فرستاد.
addError()
برای افزودن یک خطای خاص به Stream استفاده می شود.
hasListener
یک Getter است که بررسی می کند که آیا یک Listener فعال برای Stream وجود دارد یا خیر.
isClosed
یک Getter است که بررسی می کند که آیا StreamController بسته شده است یا خیر.
isPaused
یک Getter است که بررسی می کند که آیا StreamController متوقف شده است یا خیر.
onPause
یک Callback است که برای توقف Stream استفاده می شود.
onResume
یک Callback است که برای ادامه دادن Stream بعد از توقف استفاده می شود.
با استفاده از این توابع، شما می توانید Stream خود را به راحتی مدیریت کنید و داده های جدید را به آن اضافه کنید، خطاها را به آن اضافه کنید و Stream را بسته و یا توقف کنید.
#daily_content
This media is not supported in your browser
VIEW IN TELEGRAM
رائفی پور بعد از دیدن این ویدیو 😐
This media is not supported in your browser
VIEW IN TELEGRAM
وقتی سعی میکنی بخوابی 🔫