|
|
# អត្ថបទទៅសំឡេង - ឧបករណ៍ IoT ខាងវីឌ្យូ
|
|
|
|
|
|
ក្នុងផ្នែកនេះនៃមេរៀន អ្នកនឹងសរសេរកូដដំណើរការបម្លែងអត្ថបទទៅសំឡេង ដោយប្រើសេវាកម្មសំឡេង។
|
|
|
|
|
|
## បម្លែងអត្ថបទទៅសំឡេង
|
|
|
|
|
|
SDK សេវាកម្មសំឡេងដែលអ្នកបានប្រើក្នុងមេរៀនមុនដើម្បីបម្លែងសំឡេងទៅអត្ថបទ អាចប្រើដើម្បីបម្លែងអត្ថបទត្រឡប់វិញទៅសំឡេង។ នៅពេលស្នើសុំសំឡេង អ្នកត្រូវផ្តល់អង្គធាតុសំឡេងដើម្បីប្រើ ព្រោះសំឡេងអាចត្រូវបានបង្កើតដោយប្រើអង្គធាតុសំឡេងផ្សេងៗជាច្រើន។
|
|
|
|
|
|
រៀងរាល់ភាសាគាំទ្រអង្គធាតុសំឡេងផ្សេងៗ ហើយអ្នកអាចទទួលបានបញ្ជីអង្គធាតុសំឡេងដែលគាំទ្រសម្រាប់ភាសារនីមួយៗពី SDK សេវាកម្មសំឡេង។
|
|
|
|
|
|
### ភារកិច្ច - បម្លែងអត្ថបទទៅសំឡេង
|
|
|
|
|
|
1. បើកគម្រោង `smart-timer` នៅក្នុង VS Code ហើយប្រាកដថាបរិយាកាសយន្ត_virtual បានផ្ទុកនៅក្នុងទ терминال។
|
|
|
|
|
|
1. អនុញ្ញាតឲ្យអ្នកអញ្ញាតាំន `SpeechSynthesizer` ពីបណ្ដុំម៉ូឌុល `azure.cognitiveservices.speech` ដោយបូកបញ្ចូលវាក្នុងការនាំចូលដែលមានរួចហើយ៖
|
|
|
|
|
|
```python
|
|
|
from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
|
|
|
```
|
|
|
|
|
|
1. ខាងលើមុខងារ `say` សូមបង្កើតការកំណត់សំឡេងសម្រាប់ប្រើជាមួយ speech synthesizer៖
|
|
|
|
|
|
```python
|
|
|
speech_config = SpeechConfig(subscription=speech_api_key,
|
|
|
region=location)
|
|
|
speech_config.speech_synthesis_language = language
|
|
|
speech_synthesizer = SpeechSynthesizer(speech_config=speech_config)
|
|
|
```
|
|
|
|
|
|
នេះប្រើកន្លែង API key, ទីតាំង និងភាសាដដែលដែលបានប្រើដោយ recognizer ។
|
|
|
|
|
|
1. ខាងក្រោមនេះ បន្ថែមកូដខាងក្រោមដើម្បីទទួលអង្គធាតុសំឡេងមួយ ហើយកំណត់វាលើការកំណត់សំឡេង៖
|
|
|
|
|
|
```python
|
|
|
voices = speech_synthesizer.get_voices_async().get().voices
|
|
|
first_voice = next(x for x in voices if x.locale.lower() == language.lower())
|
|
|
speech_config.speech_synthesis_voice_name = first_voice.short_name
|
|
|
```
|
|
|
|
|
|
វាយកបញ្ជីអង្គធាតុសំឡេងទាំងអស់ដែលអាចប្រើបាន ហើយរកអង្គធាតុសំឡេងដំបូងដែលផ្គូផ្គងជាមួយភាសាដែលកំពុងប្រើ។
|
|
|
|
|
|
> 💁 អ្នកអាចទាញយកបញ្ជីពេញលេញនៃអង្គធាតុសំឡេងដែលគាំទ្របានពី [ឯកសារ Language and voice support documentation on Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/speech-service/language-support?WT.mc_id=academic-17441-jabenn#text-to-speech)។ ប្រសិនបើចង់ប្រើអង្គធាតុសំឡេងពិសេសមួយ អ្នកអាចដករាល់មុខងារនេះចេញ ហើយកំណត់អង្គធាតុសំឡេងដោយដៃដោយប្រើឈ្មោះសំឡេងពីឯកសារនេះ។ ឧទាហរណ៍៖
|
|
|
>
|
|
|
> ```python
|
|
|
> speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
|
|
|
> ```
|
|
|
|
|
|
1. បន្ទាប់មកវាយបញ្ជូលមាតិកានៃមុខងារ `say` ដើម្បីបង្កើត SSML សម្រាប់តបតទៅ៖
|
|
|
|
|
|
```python
|
|
|
ssml = f'<speak version=\'1.0\' xml:lang=\'{language}\'>'
|
|
|
ssml += f'<voice xml:lang=\'{language}\' name=\'{first_voice.short_name}\'>'
|
|
|
ssml += text
|
|
|
ssml += '</voice>'
|
|
|
ssml += '</speak>'
|
|
|
```
|
|
|
|
|
|
1. ខាងក្រោមនេះ ពង្រឹងការទទួលសំឡេងឲ្យឈប់ ពោលសំឡេង SSML ទើបចាប់ផ្ដើមការទទួលសំឡេងម្ដងទៀត៖
|
|
|
|
|
|
```python
|
|
|
recognizer.stop_continuous_recognition()
|
|
|
speech_synthesizer.speak_ssml(ssml)
|
|
|
recognizer.start_continuous_recognition()
|
|
|
```
|
|
|
|
|
|
ការទទួលសំឡេងត្រូវបានឈប់នៅពេលដែលអត្ថបទត្រូវបកប្ដូរទៅសំឡេង ដើម្បីឱ្យការប្រកាសថាឧបករណ៍កំណត់ពេលវេលាបានចាប់ផ្ដើម មិនត្រូវបានគេឮឃើញ សំឡេងដែលផ្ញើទៅ LUIS ហើយអាចត្រូវបានបកស្រាយថាគឺជាសំណើឱ្យកំណត់ឧបករណ៍ពេលវេលាថ្មី។
|
|
|
|
|
|
> 💁 អ្នកអាចសាកល្បងនេះដោយការសរសេរជាកំណត់ ឬ ការដកបន្ទាត់ដែលឈប់ និងចាប់ផ្ដើមការទទួលសំឡេងម្ដងទៀត។ កំណត់ឧបករណ៍ពេលវេលាមួយ ហើយអ្នកអាចសង្កេតឃើញការប្រកាសកំណត់ឧបករណ៍ពេលវេលាថ្មី ដែលនាំរួចទៅការប្រកាសថ្មីនាំឲ្យមានការកំណត់ឧបករណ៍ពេលវេលាថ្មី ហើយបន្តតទៅបន្តមកជានិច្ច!
|
|
|
|
|
|
1. ដំណើរការកម្មវិធី ហើយប្រាកដថាមុខងារ app កំពុងដំណើរការផងដែរ។ កំណត់ឧបករណ៍ពេលវេលាមួយចំនួន ហើយអ្នកនឹងស្តាប់ការទទួលសំឡេងថាការកំណត់ឧបករណ៍ពេលវេលារបស់អ្នកត្រូវបានដំណើរការ រួចក៏មានការទទួលសំឡេងម្តងទៀតពេលឧបករណ៍ពេលវេលាដំណើរការសម្រេច។
|
|
|
|
|
|
> 💁 អ្នកអាចរកឃើញកូដនេះនៅក្នុងថត [code-spoken-response/virtual-iot-device](../../../../../6-consumer/lessons/3-spoken-feedback/code-spoken-response/virtual-iot-device)។
|
|
|
|
|
|
😀 កម្មវិធីកំណត់ពេលវេលារបស់អ្នកបានជោគជ័យ!
|
|
|
|
|
|
---
|
|
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
|
**ការបដិសេធ**៖
|
|
|
ឯកសារនេះត្រូវបានប្រែសម្រួលដោយប្រព័ន្ធបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ បើទោះបីយើងខិតខំប្រឹងប្រែងក្នុងការជាក់លាក់ ក៏សូមយកចិត្តទុកដាក់ថា ការបកប្រែដោយស្វ័យប្រវត្តិនេះអាចមានកំហុសឬច្រឡំ។ ឯកសារដើមក្នុងភាសាទីតាំងរបស់វាគួរត្រូវបានចាត់ទុកជាវិទ្យាសាស្ត្រដែលមានអានុភាព។ សម្រាប់ព័ត៌មានមានសារៈសំខាន់ ការប្រែសម្រួលដោយអ្នកជំនាញមនុស្សគឺផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសត្រូវណាមួយដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |