7.6 KiB
تبدیل گفتار به متن - دستگاه مجازی اینترنت اشیا
در این بخش از درس، شما کدی خواهید نوشت که گفتاری که از میکروفون شما ضبط شده است را با استفاده از سرویس گفتار به متن تبدیل میکند.
تبدیل گفتار به متن
در سیستمعاملهای ویندوز، لینوکس و macOS، میتوانید از Python SDK سرویسهای گفتار استفاده کنید تا به میکروفون گوش دهید و هر گفتاری که شناسایی میشود را به متن تبدیل کنید. این ابزار به صورت مداوم گوش میدهد، سطح صدا را تشخیص میدهد و زمانی که سطح صدا کاهش مییابد (مانند پایان یک بلوک گفتار)، گفتار را برای تبدیل به متن ارسال میکند.
وظیفه - تبدیل گفتار به متن
-
یک اپلیکیشن جدید پایتون در کامپیوتر خود ایجاد کنید. این اپلیکیشن را در پوشهای به نام
smart-timer
با یک فایل به نامapp.py
و یک محیط مجازی پایتون ایجاد کنید. -
بسته Pip مربوط به سرویسهای گفتار را نصب کنید. مطمئن شوید که این کار را از یک ترمینال با محیط مجازی فعال انجام میدهید.
pip install azure-cognitiveservices-speech
⚠️ اگر با خطای زیر مواجه شدید:
ERROR: Could not find a version that satisfies the requirement azure-cognitiveservices-speech (from versions: none) ERROR: No matching distribution found for azure-cognitiveservices-speech
باید Pip را بهروزرسانی کنید. این کار را با دستور زیر انجام دهید و سپس دوباره تلاش کنید بسته را نصب کنید:
pip install --upgrade pip
-
واردات زیر را به فایل
app.py
اضافه کنید:import requests import time from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer
این کد برخی از کلاسهایی که برای شناسایی گفتار استفاده میشوند را وارد میکند.
-
کد زیر را برای تعریف برخی تنظیمات اضافه کنید:
speech_api_key = '<key>' location = '<location>' language = '<language>' recognizer_config = SpeechConfig(subscription=speech_api_key, region=location, speech_recognition_language=language)
<key>
را با کلید API سرویس گفتار خود جایگزین کنید.<location>
را با موقعیتی که هنگام ایجاد منبع سرویس گفتار استفاده کردهاید جایگزین کنید.<language>
را با نام محلی زبانی که در آن صحبت میکنید جایگزین کنید، برای مثالen-GB
برای انگلیسی یاzn-HK
برای کانتونی. میتوانید لیست زبانهای پشتیبانیشده و نامهای محلی آنها را در مستندات پشتیبانی زبان و صدا در Microsoft Docs پیدا کنید.این تنظیمات برای ایجاد یک شیء
SpeechConfig
استفاده میشود که سرویسهای گفتار را پیکربندی میکند. -
کد زیر را برای ایجاد یک تشخیصدهنده گفتار اضافه کنید:
recognizer = SpeechRecognizer(speech_config=recognizer_config)
-
تشخیصدهنده گفتار روی یک رشته پسزمینه اجرا میشود، به صدا گوش میدهد و هر گفتاری که در آن شناسایی شود را به متن تبدیل میکند. شما میتوانید متن را با استفاده از یک تابع callback دریافت کنید - تابعی که تعریف میکنید و به تشخیصدهنده ارسال میکنید. هر بار که گفتار شناسایی میشود، این تابع فراخوانی میشود. کد زیر را برای تعریف یک callback اضافه کنید و این callback را به تشخیصدهنده ارسال کنید. همچنین یک تابع برای پردازش متن تعریف کنید که متن را در کنسول بنویسد:
def process_text(text): print(text) def recognized(args): process_text(args.result.text) recognizer.recognized.connect(recognized)
-
تشخیصدهنده فقط زمانی شروع به گوش دادن میکند که به صورت صریح آن را شروع کنید. کد زیر را برای شروع تشخیص اضافه کنید. این کد در پسزمینه اجرا میشود، بنابراین برنامه شما به یک حلقه بینهایت نیاز دارد که بخوابد تا برنامه در حال اجرا باقی بماند.
recognizer.start_continuous_recognition() while True: time.sleep(1)
-
این اپلیکیشن را اجرا کنید. در میکروفون خود صحبت کنید و صدای تبدیلشده به متن در کنسول نمایش داده خواهد شد.
(.venv) ➜ smart-timer python3 app.py Hello world. Welcome to IoT for beginners.
جملات مختلف را امتحان کنید، همراه با جملاتی که کلمات مشابهی دارند اما معانی متفاوتی دارند. برای مثال، اگر به زبان انگلیسی صحبت میکنید، بگویید "I want to buy two bananas and an apple too" و توجه کنید که چگونه از "to"، "two" و "too" به درستی بر اساس زمینه کلمه استفاده میکند، نه فقط صدای آن.
💁 میتوانید این کد را در پوشه code-speech-to-text/virtual-iot-device پیدا کنید.
😀 برنامه تبدیل گفتار به متن شما با موفقیت اجرا شد!
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.