הצבתי לעצמי את המשימה לכתוב את הקול של הטקסט בסינית.זה עניין די פשוט אם כבר יש לכם ניסיון, אבל כשתתחילו לעשות את זה מאפס, תאסוף כל כך הרבה בעיות שהרצון עלול להיעלם הרבה קודם.JavaScript היא שפה מאוד פונקציונלית, נראה שיש בה כל מה שהלב שלך חפץ בו.
בואו נסתכל על הגרסה הסופית שתוכל להדביק לתוך DevTools ולבדוק אותה.
var utterance = new SpeechSynthesisUtterance('菜');
var voices = window.speechSynthesis.getVoices();
utterance.voice = voices.filter(function(voice) { return voice.lang == 'zh-CN'; })[0];
window.speechSynthesis.speak(utterance);
zh-CN - כך מסומנת השפה הסינית במעיים של הדפדפן.בתוכנית שלנו, אנחנו מחפשים בדפדפן את הקול של השפה הסינית, ומנסים לשחזר את הביטוי שלנו.זה כמעט לא שונה מלהשמיע כל שפה אחרת.אבל יש כאן כמה ניואנסים.בסינון מערך השפות הזמינות אנו נתקלים בשני קולות zh-CN סיניים.אפס יהיה קול נשי, והראשון הוא קול גברי.
נְקֵבָה
utterance.voice = voices.filter(function(voice) { return voice.lang == 'zh-CN'; })[0];
זָכָר
utterance.voice = voices.filter(function(voice) { return voice.lang == 'zh-CN'; })[1];
בנוסף, המשחק הקולי יהיה שונה מדפדפן לדפדפן וממכשיר למכשיר.לדפדפן כרום יש קולות משלו, לדפדפן Edge יש קולות אחרים לגמרי, יותר נעימים, אגב, ולדפדפן האופרה אין בכלל קולות, כך שלא יהיו קולות.
ניתן לתלות את הקוד הזה על הכפתור ולהשמיע משהו משלך.
function say(voiceId){
let text = document.getElementById("pole").innerHTML
console.log (text)
var utterance = new SpeechSynthesisUtterance(text);
var voices = window.speechSynthesis.getVoices();
utterance.voice = voices.filter(function(voice) { return voice.lang == 'zh-CN'; })[voiceId];
window.speechSynthesis.speak(utterance);
}
וקוד כפתור:
<button onclick="say(1)">👨🔉</button>
אין בעיות אחרות עם משחק קול.אה כן, איך הכל עובד בסמארטפונים.כן, נהדר, במיוחד בדפדפן Edge הנייד.אגב, בהתבסס על הטכנולוגיה הזו, אני מנסה ליצור שירות מיקרו ללימוד סינית, הנה הוא:
http://jkeks.ru/china .הכל מיושם בדיוק כפי שתיארתי כאן.