เสียงที่แนะนำสำหรับ Web Speech API
พื้นที่เก็บข้อมูลนี้เป็นส่วนหนึ่งของโปรเจ็กต์ขนาดใหญ่ ซึ่งมีจุดมุ่งหมายเพื่อระบุแนวทางปฏิบัติที่ดีที่สุดในการนำคุณสมบัติการอ่านออกเสียงไปใช้ในแอปการอ่าน
ด้วยเสียงนับร้อยที่พร้อมใช้งานตามค่าเริ่มต้นในเบราว์เซอร์และระบบปฏิบัติการต่างๆ อาจเป็นเรื่องยากสำหรับนักพัฒนาในการจัดเตรียมค่าเริ่มต้นที่สมเหตุสมผลและรายการเสียงที่รวบรวมไว้
ด้วยการมุ่งเน้นไปที่การเลือกเสียง เป้าหมายของโปรเจ็กต์นี้คือการบันทึกเสียงคุณภาพสูงขึ้นบนแพลตฟอร์มต่างๆ และมอบวิธีง่ายๆ ในการปรับใช้คำแนะนำเหล่านี้โดยใช้ไฟล์การกำหนดค่า JSON
กรณีการใช้งาน
- ให้เสียงเริ่มต้นที่ดีที่สุดที่เป็นไปได้ต่อภาษา
- แสดงรายการเสียงตามลำดับตามคุณภาพ
- การแสดงชื่อเสียงที่ใช้งานง่าย
- การกรองเสียงที่แนะนำตามเพศและอายุ (ผู้ใหญ่และเด็ก)
- กรองเสียงแปลกใหม่และเสียงคุณภาพต่ำออก
- การแสดงตัวอย่างเสียงพร้อมคำพูดทดสอบ
สาธิต
มีการสาธิตสดตามโครงการ Readium Speech
การสาธิตนี้ใช้แนวทางปฏิบัติที่ดีที่สุดสำหรับการเลือกเสียงพร้อมกับข้อมูลจากพื้นที่เก็บข้อมูลนี้
รายชื่อภาษาที่รองรับ
เป้าหมายของโปรเจ็กต์นี้คือการสนับสนุนทั้งหมด 43 ภาษาที่มีอยู่บน Windows และ macOS
ในสถานะปัจจุบันครอบคลุม 43 ภาษา:
- อารบิก (แอลจีเรีย, บาห์เรน, อียิปต์, อิรัก, จอร์แดน, คูเวต, เลบานอน, ลิเบีย, โมร็อกโก, โอมาน, กาตาร์, ซาอุดีอาระเบีย, ซีเรีย, ตูนิเซีย, สหรัฐอาหรับเอมิเรตส์, เยเมน)
- บาสก์
- เบงกาลี (อินเดียและบังคลาเทศ)
- โภชปุรี
- บัลแกเรีย
- คาตาลัน
- ชาวจีน:
- จีนกลาง (จีนแผ่นดินใหญ่, ไต้หวัน)
- ภาษาจีนอู๋ (หรือที่รู้จักในชื่อ "เซี่ยงไฮ้")
- ภาษาจีนเย่ว์ (หรือที่รู้จักในชื่อ "กวางตุ้ง")
- โครเอเชีย
- เช็ก
- ภาษาเดนมาร์ก
- ดัตช์ (เนเธอร์แลนด์และเบลเยียม)
- อังกฤษ (สหรัฐอเมริกา สหราชอาณาจักร ออสเตรเลีย แคนาดา ฮ่องกง อินเดีย ไอร์แลนด์ เคนยา นิวซีแลนด์ ไนจีเรีย สกอตแลนด์ สิงคโปร์ แอฟริกาใต้ และแทนซาเนีย)
- ภาษาฟินแลนด์
- ฝรั่งเศส (ฝรั่งเศส แคนาดา เบลเยียม และสวิตเซอร์แลนด์)
- กาลิเซีย
- เยอรมัน (เยอรมนี ออสเตรีย และสวิตเซอร์แลนด์)
- กรีก
- ภาษาฮีบรู
- ฮินดี
- ภาษาฮังการี
- ชาวอินโดนีเซีย
- ภาษาอิตาลี
- ญี่ปุ่น
- กันนาดา
- เกาหลี
- มาเลย์
- ภาษามราฐี
- ภาษานอร์เวย์
- เปอร์เซีย
- ขัด
- โปรตุเกส (โปรตุเกสและบราซิล)
- โรมาเนีย
- ภาษารัสเซีย
- สโลวัก
- ภาษาสโลเวเนีย
- สเปน (สเปน, อาร์เจนตินา, โบลิเวีย, ชิลี, โคลอมเบีย, คอสตาริกา, คิวบา, สาธารณรัฐโดมินิกัน, เอกวาดอร์, เอลซัลวาดอร์, อิเควทอเรียลกินี, กัวเตมาลา, ฮอนดูรัส, เม็กซิโก, นิการากัว, ปานามา, ปารากวัย, เปรู, เปอร์โตริโก, สหรัฐอเมริกา, อุรุกวัย และ เวเนซุเอลา)
- ภาษาสวีเดน
- ภาษาทมิฬ (อินเดีย ศรีลังกา มาเลเซีย และสิงคโปร์)
- เตลูกู
- แบบไทย
- ภาษาตุรกี
- ภาษายูเครน
- ภาษาเวียดนาม
รายการเสียงที่จะกรองออก
ในอีกด้านหนึ่งของสเปกตรัม โปรเจ็กต์นี้ยังระบุเสียงจำนวนหนึ่งที่ควรกรองออกจากส่วนประกอบตัวเลือกเสียง
บางส่วนเป็นอันตรายต่อประสบการณ์การอ่านโดยรวม ในขณะที่บางส่วนมีคุณภาพต่ำมากบนแพลตฟอร์มที่มีตัวเลือกที่โหลดไว้ล่วงหน้าที่ดีกว่า
- เสียงแปลกใหม่ (อุปกรณ์ Apple)
- เสียงคุณภาพต่ำมาก (อุปกรณ์ Apple และ Chrome OS)
หลักการชี้นำ
- รายการเสียงแต่ละรายการได้รับการจัดเรียงและออกแบบมาเพื่อมอบประสบการณ์การฟังที่ดีที่สุดบนเบราว์เซอร์/ระบบปฏิบัติการ/ภาษาทั้งหมดที่ครอบคลุมในโปรเจ็กต์นี้
- แต่แต่ละรายการยังมีตัวเลือกเริ่มต้นอยู่ด้วย เพื่อให้แน่ใจว่ามีสิ่งที่เชื่อถือได้อยู่เสมอ
- เมื่อคำนึงถึงเป้าหมายทั้งสองนี้ เสียงที่มีคุณภาพสูงกว่าจะแสดงอยู่ด้านบนสุดของรายการ ในขณะที่เสียงคุณภาพต่ำหรือเสียงเฉพาะทางจะแสดงอยู่ที่ด้านล่าง
- จำนวนเสียงอาจดูล้นหลาม (มากกว่า 110 เสียงในภาษาอังกฤษเพียงอย่างเดียว) แต่ในทางปฏิบัติ ผู้ใช้บนอุปกรณ์แต่ละเครื่องจะมีเพียงบางส่วนเท่านั้น
- ชื่อเสียงที่ส่งกลับโดย Web Speech API แทบจะไม่เป็นมิตรกับผู้ใช้ ซึ่งเป็นเหตุผลว่าทำไมรายการนี้จึงจัดเตรียมชื่ออื่นที่มักจะรวมชื่อ (หรือเพศ) พร้อมกับภูมิภาคที่เกี่ยวข้องกับเสียง
- เมื่อใดก็ตามที่เป็นไปได้ ฉันจะพยายามรวมตัวเลือกคุณภาพสูงและตัวเลือกเริ่มต้นไว้อย่างดีสำหรับทั้งสองเพศ
- แต่ก็ต้องจัดลำดับความสำคัญของรายการเสียงผู้หญิงในปัจจุบันอยู่เหนือเสียงผู้ชาย เนื่องจากเพศที่เกี่ยวข้องกับแต่ละเสียงได้รับการบันทึกไว้ ซึ่งช่วยให้ผู้ปฏิบัติงานสามารถจัดลำดับความสำคัญ/กรองรายการใหม่ตามเกณฑ์นี้
- รูปแบบภูมิภาคยังถูกจัดกลุ่มไว้ด้วยกันในรายการเดียว แทนที่จะแยกออกเป็นไฟล์ของตัวเองโดยตั้งใจ ในอุปกรณ์บางรุ่น อาจมีเสียงเพียงสองหรือสามเสียงเท่านั้น และการแยกตัวแปรระดับภูมิภาคก็ไม่สมเหตุสมผล
- แต่ต้องจัดลำดับความสำคัญของตัวแปรระดับภูมิภาคในรายการ สำหรับตอนนี้ ภูมิภาคที่มีตัวเลือกเสียงที่ดีที่สุดจะแสดงไว้ด้านบน แต่ขอแนะนำอย่างยิ่งให้ผู้ใช้พิจารณาการตั้งค่าภูมิภาคของผู้ใช้
ไวยากรณ์
JSON Schema พร้อมใช้งานสำหรับการตรวจสอบความถูกต้องหรือผู้ที่อาจเป็นผู้ร่วมให้ข้อมูลที่สนใจในการเปิด PR สำหรับภาษาใหม่หรือการเพิ่มเสียง
ฉลาก
ต้องมี label
สำหรับแต่ละเสียงที่แนะนำ และจัดให้มีป้ายกำกับที่เป็นมิตรต่อมนุษย์สำหรับแต่ละเสียง
สตริงนี้ได้รับการแปลเป็นภาษาเป้าหมายและมักจะมีข้อมูลต่อไปนี้:
- ชื่อ (ถ้ามี)
- เพศ (เมื่อไม่มีชื่อ)
- ประเทศ/ภูมิภาค
ตัวอย่างที่ 1: เสียงธรรมชาติของ Microsoft
แม้ว่าชื่อที่ Microsoft บันทึกไว้สำหรับเสียงที่เป็นธรรมชาตินั้นสามารถเข้าใจได้ง่าย แต่ชื่อเหล่านี้มักจะยาวมากและได้รับการแปลเป็นภาษาอังกฤษทั้งหมด
{
"label" : " Isabella (Italia) " ,
"name" : " Microsoft Isabella Online (Natural) - Italian (Italy) " ,
"language" : " it-IT "
}
ตัวอย่างที่ 2: เสียงของ Chrome OS
Chrome OS ให้เสียงคุณภาพสูงจำนวนหนึ่งผ่านทางระบบย่อยของ Android แต่ก็มีชื่อที่แย่ที่สุดสำหรับผู้ใช้ปลายทาง
{
"label" : " Female voice 1 (US) " ,
"name" : " Android Speech Recognition and Synthesis from Google en-us-x-tpc-network " ,
"language" : " en-US "
}
ชื่อ
จำเป็นต้องมี name
สำหรับแต่ละเสียงที่แนะนำ และใช้เป็นตัวระบุหลักสำหรับเสียงในโปรเจ็กต์นี้
ชื่อส่วนใหญ่จะมีความเสถียรในทุกเบราว์เซอร์ ซึ่งหมายความว่าสำหรับเสียงส่วนใหญ่ เพียงสตริงเดียวก็เพียงพอแล้ว
แต่น่าเสียดายที่ยังมีความผิดปกติอยู่บ้าง เช่น เสียงของ Android, iOS, iPadOS และ macOS
สำหรับเสียงเหล่านั้น อย่างน้อยส่วนหนึ่งของสตริงมักจะถูกแปลเป็นภาษาท้องถิ่น การตั้งชื่อในเบราว์เซอร์ต่างๆ อาจไม่สอดคล้องกัน และสามารถเปลี่ยนแปลงได้ขึ้นอยู่กับจำนวนตัวแปรที่ติดตั้ง
ด้วยเหตุนี้ แต่ละรายการจึงสามารถมีคุณสมบัติต่อไปนี้ได้:
-
altNames
พร้อมอาร์เรย์ของสตริงทางเลือกสำหรับเสียงที่กำหนด - และ
localizedName
ที่ระบุรูปแบบสตริงที่ใช้สำหรับแปลเสียงเหล่านี้
ตัวอย่างที่ 3: เวอร์ชันอื่นของเสียงที่โหลดไว้ล่วงหน้าของ Apple
{
"label" : " Samantha (US) " ,
"name" : " Samantha " ,
"localizedName" : " apple " ,
"altNames" : [
" Samantha (Enhanced) " ,
" Samantha (English (United States)) "
],
"language" : " en-US "
}
ภาษา
ต้องใช้ language
สำหรับเสียงที่แนะนำแต่ละเสียง
ประกอบด้วยแท็กภาษา BCP 47 โดยที่รหัสภาษาสองตัวที่ลดขนาดลง ตามด้วยรหัสประเทศสองตัวอักษรตัวพิมพ์ใหญ่
รหัสภาษาและประเทศจะคั่นด้วยเครื่องหมายขีดกลาง (-)
เสียงบางเสียงยังสามารถจัดการภาษาอื่นได้ เช่น เสียงภาษาสเปนสำหรับสหรัฐอเมริกาก็อาจจัดการกับภาษาอังกฤษได้เช่นกัน
ด้วยเหตุผลนี้ คุณสมบัติภาษา additionalLanguages
จึงสามารถใช้ได้ แม้ว่าในปัจจุบันจะไม่ค่อยได้ใช้ก็ตาม
ประกอบด้วยรายการภาษาที่ใช้รหัสตัวอักษรสองตัวเท่านั้น โดยไม่มีแท็กย่อย
เสียงใหม่ล่าสุดบางเสียงจาก Microsoft ยังสามารถส่งออกได้หลายภาษาอีกด้วย ไม่รองรับการสลับภาษาในช่วงกลางประโยค แต่ดูเหมือนว่าเอาต์พุตจะสามารถตรวจจับภาษาของแต่ละประโยคได้โดยอัตโนมัติและปรับใช้ตามนั้น
เพื่อสนับสนุนสิ่งนี้ เอาต์พุตอาจสลับไปใช้เสียงอื่นโดยอัตโนมัติในกระบวนการ
เสียงเหล่านี้ถูกระบุโดยใช้บูลีน multiLingual
ตัวอย่างที่ 4: เสียงที่มีเอาต์พุตหลายภาษา
{
"label" : " Emma (US) " ,
"name" : " Microsoft EmmaMultilingual Online (Natural) - English (United States) " ,
"language" : " en-US " ,
"multiLingual" : true
}
ตัวอย่างที่ 5: เสียงที่สามารถจัดการภาษารองได้
{
"label" : " Sylvie (Canada) " ,
"name" : " Microsoft Sylvie Online (Natural) - French (Canada) " ,
"language" : " fr-CA " ,
"otherLanguages" : [
" en "
]
}
เพศและเสียงเด็ก
gender
เป็นคุณสมบัติทางเลือกสำหรับแต่ละเสียง ซึ่งจะบันทึกเพศที่เกี่ยวข้องกับแต่ละเสียง
รองรับค่าต่อไปนี้: female
male
หรือ neutral
children
ยังเป็นทางเลือกและระบุเสียงของเด็กโดยใช้บูลีน
ตัวอย่างที่ 6: เสียงเด็กผู้หญิง
{
"label" : " Ana (US) " ,
"name" : " Microsoft Ana Online (Natural) - English (United States) " ,
"language" : " en-US " ,
"gender" : " female " ,
"children" : true
}
คุณภาพ
quality
เป็นคุณสมบัติทางเลือกสำหรับแต่ละเสียง ซึ่งจะบันทึกคุณภาพของเสียงในรูปแบบต่างๆ
รองรับค่าต่อไปนี้:
- สูงมาก
- คุณภาพการสังเคราะห์เสียงพูดที่สูงมากจนแทบจะแยกไม่ออกโดยมนุษย์
- สูง
- การสังเคราะห์เสียงพูดคุณภาพสูงเหมือนมนุษย์
- ปกติ
- คุณภาพการสังเคราะห์เสียงพูดปกติ
- ต่ำ
- การสังเคราะห์คำพูดที่มีคุณภาพต่ำและไม่เหมือนมนุษย์
- ต่ำมาก
- คุณภาพการสังเคราะห์คำพูดต่ำมาก แต่ยังคงเข้าใจได้
ตัวอย่างที่ 7: เสียงของ Apple มีให้เลือกคุณภาพสามแบบ
{
"label" : " Ava (US) " ,
"name" : " Ava " ,
"note" : " This voice can be installed on all Apple devices and offers three variants. Like all voices that can be installed on Apple devices, it suffers from inconsistent naming due to localization. " ,
"altNames" : [
" Ava (Premium) " ,
" Ava (Enhanced) " ,
" Ava (English (United States)) " ,
],
"language" : " en-US " ,
"gender" : " female " ,
"quality" : [
" low " ,
" normal " ,
" high "
],
"rate" : 1 ,
"pitch" : 1 ,
"os" : [
" macOS " ,
" iOS " ,
" iPadOS "
]
}
ระบบปฏิบัติการและเบราว์เซอร์
ทั้ง os
และ browser
เป็นคุณสมบัติเสริม ใช้เพื่อระบุว่าเสียงพร้อมใช้งานในระบบปฏิบัติการและเบราว์เซอร์ใด
คุณสมบัติทั้งสองนี้มีไว้เพื่อตีความแยกกันและไม่ใช่การผสมผสานกัน
ตัวอย่างที่ 8: เสียงของ Microsoft พร้อมใช้งานทั้งใน Edge และ Windows
{
"label" : " Denise (France) " ,
"name" : " Microsoft Denise Online (Natural) - French (France) " ,
"note" : " This voice is preloaded in Edge on desktop. In other browsers, it requires the user to run Windows 11 and install the voice pack. " ,
"language" : " fr-FR " ,
"gender" : " female " ,
"os" : [
" Windows "
],
"browser" : [
" Edge "
]
}
นอกจากนี้ preloaded
จะบ่งบอกว่าเสียงถูกโหลดล่วงหน้าในระบบปฏิบัติการและเบราว์เซอร์ทั้งหมดที่ระบุไว้หรือไม่
ด้วยแนวทางปัจจุบัน จึงไม่สามารถระบุได้ว่าเสียงพร้อมใช้งานบน Chrome และ Windows แต่จำเป็นต้องดาวน์โหลดบน Windows เป็นต้น
ตัวอย่างที่ 9: เสียงของ Google ที่โหลดไว้ล่วงหน้าใน Chrome Desktop
{
"label" : " Google female voice (UK) " ,
"name" : " Google UK English Female " ,
"language" : " en-GB " ,
"gender" : " female " ,
"browser" : [
" ChromeDesktop "
],
"preloaded" : true
}
อัตราคำพูดและระดับเสียง
เมื่อใช้ Web Speech API นั้น SpeechSynthesisUtterance
รองรับค่าเสริมสำหรับ:
-
rate
เพื่อควบคุมอัตราการพูด - และ
pitch
เพื่อควบคุมสนาม
แต่ละเสียงที่บันทึกไว้ใน repo นี้รองรับคุณสมบัติเสริมต่อไปนี้:
-
pitchControl
เป็นบูลีนที่มีค่าเริ่มต้นเป็น true
และระบุว่าเสียงสามารถควบคุมระดับเสียงได้หรือไม่ -
rate
เป็นจำนวนเต็มระหว่าง 0.1 ถึง 10 ซึ่งมีค่าเริ่มต้นเป็น 1 และให้อัตราการพูดเริ่มต้นที่แนะนำสำหรับแต่ละเสียง -
pitch
เป็นจำนวนเต็มระหว่าง 0 ถึง 2 ซึ่งมีค่าเริ่มต้นเป็น 1 และให้ระดับเสียงเริ่มต้นที่แนะนำสำหรับแต่ละเสียง
ตัวอย่างที่ 10: เสียงของ Microsoft ที่ไม่สามารถปรับระดับเสียงได้
{
"label" : " Ana (US) " ,
"name" : " Microsoft Ana Online (Natural) - English (United States) " ,
"language" : " en-US " ,
"gender" : " female " ,
"pitchControl" : false
}
ตัวอย่างที่ 11: Google Voice พร้อมระดับเสียงและอัตราความเร็วที่แนะนำ
{
"label" : " Voix Google féminine (France) " ,
"name" : " Google français " ,
"language" : " fr-FR " ,
"gender" : " female " ,
"rate" : 1 ,
"pitch" : 0.8
}
หมายเหตุเพิ่มเติม
จากการทำงานเพื่อบันทึกรายการเสียงที่แนะนำ ฉันยังได้ทดสอบเบราว์เซอร์/ระบบปฏิบัติการต่างๆ เพื่อดูว่าเสียงเหล่านั้นทำงานอย่างไร ส่วนนี้มีไว้เพื่อสรุปข้อมูลบางส่วน
นอกจากนี้ยังมีป้ายกำกับเฉพาะเพื่อติดตามปัญหาภายนอกที่รายงานไปยัง Apple, Google, Microsoft หรือ Mozilla
ทั่วไป
- Web Speech API ส่งคืนฟิลด์ต่อไปนี้ผ่านเมธอด
getVoices()
: name
, voiceURI
, lang
, localService
และ default
- แม้ว่า
voiceURI
ควรเป็นวิธีที่สอดคล้องที่สุดในการระบุเสียงในทางทฤษฎี แต่ในทางปฏิบัติ วิธีนี้ไม่น่าจะห่างไกลจากความจริง เบราว์เซอร์ส่วนใหญ่ใช้ค่าเดียวกันกับ name
สำหรับ voiceURI
และไม่บังคับใช้ค่าเฉพาะ - ดังที่เราจะเห็นในหมายเหตุสำหรับเบราว์เซอร์/ระบบปฏิบัติการเฉพาะ
name
มีการใช้งานไม่สอดคล้องกันและสามารถส่งคืนค่าที่แตกต่างกันสำหรับเสียงเดียวกันบนอุปกรณ์เดียวกัน -
localService
ระบุว่าเสียงนั้นพร้อมใช้งานแบบออฟไลน์หรือไม่ และดูเหมือนว่าจะทำงานได้ตามที่คาดไว้ ซึ่งเป็นสาเหตุที่รายการเสียงที่แนะนำในปัจจุบันไม่มีข้อมูลนั้น -
lang
ดูเหมือนจะน่าเชื่อถือเป็นส่วนใหญ่ในการใช้งาน โดยส่งคืนภาษาโดยใช้แท็กภาษา BCP 47 โดยมีภาษาหลักเป็นตัวพิมพ์เล็กและแท็กย่อยเป็นตัวพิมพ์ใหญ่ ( pt-BR
) - น่าเสียดายที่มีข้อผิดพลาดบางประการ:
- บน Android, Samsung และ Chrome ใช้ขีดล่างเป็นตัวคั่นแทน:
en_us
(ปัญหาที่เกี่ยวข้อง) - แม้ว่า Firefox บน Android จะมีความคิดสร้างสรรค์มากยิ่งขึ้น โดยใช้รหัสตัวอักษรสามตัวสำหรับภาษาต่างๆ และเพิ่มสตริงเพิ่มเติมที่ส่วนท้าย:
eng-US-f000
(ปัญหาที่เกี่ยวข้อง)
-
default
มีไว้เพื่อระบุว่าเสียงนั้นเป็นเสียงเริ่มต้นสำหรับภาษาแอปปัจจุบันหรือไม่ ตามทฤษฎีแล้ว สิ่งนี้ควรมีประโยชน์อย่างยิ่ง แต่ในทางปฏิบัติ เป็นเรื่องยากมากที่จะใช้เนื่องจากความไม่สอดคล้องกันในการใช้งาน บริบทที่จำกัด (ค่าเริ่มต้นของระบบเทียบกับค่าเริ่มต้นของผู้ใช้) และการขาดความสามารถในการตั้งค่าเสียงเริ่มต้นตามภาษา - นอกเหนือจากการใช้
default
แล้ว ผู้นำไปใช้ควรพิจารณาใช้ส่วนหัว Accept-Language
HTTP ด้วยเช่นกัน เนื่องจากมีรายการภาษา/ภูมิภาคที่ต้องการตามลำดับสำหรับผู้ใช้ที่กำหนด
หุ่นยนต์
- สำหรับตอนนี้ เราได้กล่าวถึงเฉพาะการทดสอบและเอกสารเกี่ยวกับ Android เวอร์ชันพื้นฐานซึ่งมีให้บริการในอุปกรณ์ Google Pixel เท่านั้น รายการเสียงที่มีอาจแตกต่างกันอย่างมากขึ้นอยู่กับ OEM อุปกรณ์ และเวอร์ชัน Android
- เนื่องจากธรรมชาติของ Android การจดบันทึกรูปแบบต่างๆ เหล่านี้จึงเป็นเรื่องยากมาก จะมีการพยายามเพิ่มเติมในเวอร์ชันอนาคตของโปรเจ็กต์นี้ผ่านการใช้ฟาร์มอุปกรณ์ (ปัญหาที่เกี่ยวข้อง)
- ใน vanilla Android เวอร์ชันล่าสุด มีตัวเลือกเสียงคุณภาพสูงที่ยอดเยี่ยมซึ่งครอบคลุมภาษา/ภูมิภาคที่หลากหลาย (67 รายการ ณ เดือนเมษายน 2024)
- ในการใช้เสียงเหล่านี้ ผู้ใช้จำเป็นต้องเจาะลึกการตั้งค่าระบบเพื่อดาวน์โหลด (เฉพาะภาษาระบบของคุณและภาษายอดนิยมบางภาษาเท่านั้นที่ถูกโหลดไว้ล่วงหน้าตามค่าเริ่มต้น) หรือเลือกเสียงที่ต้องการตามภาษา/ภูมิภาค
- ขออภัย Chrome บน Android จะไม่ส่งคืนรายการเสียงที่ผู้ใช้สามารถใช้ได้ แต่จะส่งคืนรายการภาษา/ภูมิภาคที่ไม่มีการกรอง (ปัญหาที่เกี่ยวข้อง)
- ที่เลวร้ายไปกว่านั้น เสียงและภูมิภาคเหล่านี้ล้วนถูกแปลเป็นภาษาท้องถิ่นของระบบ
- เหนือสิ่งอื่นใด ซึ่งหมายความว่าแม้แต่ภาษาและภูมิภาคที่จำเป็นต้องติดตั้งชุดเสียงก็จะแสดงในรายการที่ส่งคืนโดย Web Speech API (ปัญหาที่เกี่ยวข้อง)
- หากผู้ใช้เลือกภาษา/ภูมิภาคที่ต้องการดาวน์โหลดชุดเสียง Chrome จะใช้เสียงภาษาอังกฤษเป็นค่าเริ่มต้นแทน (ปัญหาที่เกี่ยวข้อง)
- แม้ว่าจะติดตั้งชุดเสียงแล้ว ผู้ใช้อาจต้องเลือกเสียงเริ่มต้นสำหรับแต่ละภูมิภาคก่อนจึงจะสามารถใช้ภาษา/ภูมิภาคได้
- ด้วยแนวทางการเลือกเสียงที่ไม่ดีเช่นนี้ Chrome บน Android จึงไม่ระบุภาษา/ภูมิภาคที่ผู้ใช้ต้องการโดยใช้
default
(ปัญหาที่เกี่ยวข้อง)
Chrome เดสก์ท็อป
- บนเดสก์ท็อป Chrome มาพร้อมกับเสียงคุณภาพสูง 19 เสียงที่โหลดไว้ล่วงหน้าใน 15 ภาษา
- เสียงเหล่านี้ทั้งหมดจำเป็นต้องเข้าถึงออนไลน์เพื่อใช้งานได้ โดยไม่มีทางเลือกอื่นใดในการใช้รูปแบบออฟไลน์คุณภาพต่ำ
- น่าเสียดายที่เสียงเหล่านี้ยังประสบปัญหาหากคำพูดใดๆ ที่ Web Speech API อ่านใช้เวลานานกว่า 14 วินาที (ปัญหาที่เกี่ยวข้อง) และไม่ส่งคืนเหตุการณ์ขอบเขต (ปัญหาที่เกี่ยวข้อง)
- ภายใต้สถานการณ์ปัจจุบัน เสียงของ Google เหล่านี้ได้รับการจัดลำดับความสำคัญต่ำกว่าเสียงที่เทียบเท่าของ Microsoft/Apple ในรายการเสียงที่แนะนำ
- โดยรวมแล้ว น่าเสียดายที่ Chrome Desktop ยังล้าหลัง Android และ Chrome OS มากในเรื่องของเสียงและภาษาที่สนับสนุนโดยค่าเริ่มต้น (ปัญหาที่เกี่ยวข้อง)
โครมโอเอส
- Chrome OS มาพร้อมกับชุดเสียงสี่ชุด: เสียงของ Chrome OS, เสียงของ Android (50+ ภาษา), เสียงที่เป็นธรรมชาติ และเสียง eSpeak (38 ภาษา)
- ตามค่าเริ่มต้น Chrome OS จะดาวน์โหลดเสียงของ Chrome OS สำหรับภาษาของระบบของคุณ ในขณะที่เสียงของ Android และ eSpeak มีให้บริการในทุกภาษา
- Google ยังค่อยๆ เพิ่มการรองรับสำหรับเสียงธรรมชาติ ซึ่งโดยพื้นฐานแล้วเป็นเสียง Android คุณภาพสูงกว่าพร้อมข้อดีเพิ่มเติมของการทำงานแบบออฟไลน์ เสียงที่เป็นธรรมชาติต้องการให้ผู้ใช้ไปที่การตั้งค่าระบบเพื่อติดตั้ง
- Chrome OS มีแนวโน้มที่โชคร้ายในการถอนการติดตั้งชุดเสียงทุกครั้งที่ติดตั้งการอัปเดต Chrome OS ใหม่ ซึ่งเกิดขึ้นบ่อยมาก
- เสียง Android ส่วนใหญ่มีทั้งแบบออฟไลน์และออนไลน์ และมีคุณภาพเทียบเท่ากับเสียงที่ Apple นำเสนอในแง่ของเสียงที่ดาวน์โหลดได้
- เสียง Android เหล่านี้มีชื่อที่แย่ที่สุดบนแพลตฟอร์ม/เบราว์เซอร์ใดๆ ทำให้แทบจะไม่สามารถใช้งานได้หากไม่มีการติดป้ายกำกับใหม่จากโปรเจ็กต์นี้
- เสียงของ Android ยังประสบปัญหาเกี่ยวกับเวลาแฝงและ/หรือความพร้อมใช้งาน ในบางกรณี อาจต้องใช้เวลาถึงหนึ่งนาทีจึงจะอ่านออกเสียงคำพูดแรกได้
- เสียงของ Chrome อยู่ต่ำกว่าเสียงของ Android เพียงขั้นตอนเดียว แต่มีตัวเลือกที่ดีสำหรับภาษาทั่วไป
- ควรหลีกเลี่ยงเสียง eSpeak โดยไม่เสียค่าใช้จ่ายใดๆ เนื่องจากเสียงมีคุณภาพต่ำมาก และได้รับการบันทึกไว้แยกต่างหากเพื่อกรองออก
ขอบ
- บนเดสก์ท็อป Edge มีตัวเลือกเสียงคุณภาพสูงที่ดีที่สุดพร้อมเสียงที่โหลดไว้ล่วงหน้ามากกว่า 250 เสียงใน 75 ภาษา (ข้อมูล ณ เดือนเมษายน 2567)
- เสียงที่เรียกว่าเสียง "ธรรมชาติ" ทั้งหมดนี้อาศัยการเรียนรู้ของเครื่อง (ML) ดังนั้นจึงต้องมีการเข้าถึงแบบออนไลน์จึงจะใช้งานได้
- เสียงเหล่านั้นจำนวนเล็กน้อยยังมีหลายภาษาและดูเหมือนว่าจะสามารถตรวจจับภาษาของประโยคและปรับตามนั้นได้ น่าเสียดายที่วิธีนี้ใช้ไม่ได้ผลเมื่อมีการสลับภาษาระหว่างประโยค
- อย่างน้อยบน macOS มีข้อผิดพลาดแปลก ๆ ที่ Edge แสดงเสียงธรรมชาติเพียง 18 เสียงในตอนแรก แต่จะขยายเป็น 250+ เมื่อใช้ Web Speech API เพื่อส่งสัญญาณเสียง
- นอกจากนี้ยังมีปัญหาเพิ่มเติมที่ผู้ดำเนินการควรทราบเมื่อใช้เสียงเหล่านี้: พวกเขาไม่รองรับการปรับระดับเสียง (ปัญหาที่เกี่ยวข้อง) และต้องหลีกเลี่ยงอักขระจำนวนหนึ่งเพื่อหลีกเลี่ยงปัญหาการเล่น (ปัญหาที่เกี่ยวข้อง)
- บนมือถือ Edge ไม่ค่อยน่าสนใจเท่าไหร่:
- ไม่สามารถใช้งานได้อย่างสมบูรณ์บน Android เนื่องจากส่งคืนรายการเสียงที่ว่างเปล่า ซึ่งทำให้ไม่สามารถใช้กับ Web Speech API (ปัญหาที่เกี่ยวข้อง)
- บน iOS/iPadOS ขณะนี้เบราว์เซอร์ทั้งหมดถูกบังคับให้ใช้ Safari เป็นเครื่องมือ ซึ่งหมายความว่า Edge จะทำงานเหมือนกับ Safari Mobile ทุกประการ
ไฟร์ฟอกซ์
- บนเดสก์ท็อป Firefox ดูเหมือนค่อนข้างตรงไปตรงมาเมื่อพูดถึงการเลือกเสียง
- Firefox ไม่ได้มาพร้อมกับเสียงที่โหลดไว้ล่วงหน้าในตัวมันเอง ซึ่งต่างจาก Chrome และ Edge
- Firefox มีแนวทางที่แตกต่างกันสำหรับ
voiceURI
โดยที่แต่ละเสียงจะถูกระบุอย่างแท้จริงด้วย URN ที่ไม่ซ้ำใคร - เนื่องจากนี่เป็นลักษณะเฉพาะของ Firefox ไฟล์ JSON ปัจจุบันจึงยังไม่ได้จัดทำเอกสาร URI เหล่านี้ แต่อาจเป็นส่วนเพิ่มเติมในอนาคต
- บน macOS นั้น Firefox จำเป็นต้องรีบูทระบบทั้งหมดเพื่อให้เสียงใหม่ปรากฏในรายการ
iOS และ iPadOS
- ระบบปฏิบัติการทั้งสองมาพร้อมกับชุดเสียงที่โหลดไว้ล่วงหน้าและเสียงที่ดาวน์โหลดได้ชุดเดียวกันกับ macOS อ่านส่วน macOS ด้านล่างเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับเสียงที่มี
- ด้วยเหตุผลที่ไม่ทราบสาเหตุ เสียงที่โหลดไว้ล่วงหน้าบางรายการจะแสดงสองครั้งเช่นกันแต่ให้เอาต์พุตเสียงเดียวกัน
- เบราว์เซอร์ทั้งหมดจำเป็นต้องทำงานบน webview ของระบบ ซึ่งหมายความว่าเบราว์เซอร์เป็นเพียงส่วนเสริมของ Safari Mobile แทนที่จะเป็นเบราว์เซอร์ที่แตกต่างกันจริงๆ
- สถานการณ์นี้อาจเปลี่ยนแปลงได้เนื่องจากกฎหมายตลาดดิจิทัลในยุโรป บังคับให้ Apple เปลี่ยนนโยบายเกี่ยวกับเบราว์เซอร์และมุมมองเว็บของบุคคลที่สาม
ระบบปฏิบัติการ macOS
- macOS มีรายการเสียงมากมายใน 45 ภาษา ทั้งแบบโหลดล่วงหน้าหรือดาวน์โหลดได้
- เสียงเหล่านี้สามารถมีรูปแบบที่แตกต่างกันได้ถึงสามแบบ ขึ้นอยู่กับคุณภาพของเอาต์พุต (และขนาดการดาวน์โหลด)
- เสียงคุณภาพสูงสุดน่าจะเป็นเสียงที่มีให้สำหรับ Siri แต่น่าเสียดายที่ไม่สามารถใช้งานได้ผ่าน Web Speech API (ปัญหาที่เกี่ยวข้อง)
- ในอีกด้านหนึ่ง Apple มีความคิดที่โชคร้ายในการโหลดชุดเสียงคุณภาพต่ำและเสียงแปลก ๆ ไว้ล่วงหน้าจำนวนมาก เช่น ชุดเสียง Eloquence (8 เสียง) และเอฟเฟกต์ (15 เสียง)
- การมีอยู่ของเสียงเหล่านี้เพียงอย่างเดียวเป็นเหตุผลที่ดีในการกรองเสียงที่มีให้กับผู้ใช้ macOS และเน้นเสียงที่แนะนำใน repo นี้
- ไม่เหมือนกับแพลตฟอร์ม/ระบบปฏิบัติการอื่น macOS ตัดสินใจแปลชื่อเสียง นี่จะไม่เป็นปัญหาหากสามารถใช้
voiceURI
เป็นตัวระบุเสียงที่เชื่อถือได้ แต่ก็ไม่เป็นเช่นนั้น (ปัญหาที่เกี่ยวข้อง) - ในสถานะปัจจุบัน Repo นี้บันทึกเฉพาะการแปลเป็นภาษาที่รองรับอย่างเป็นทางการเท่านั้น ไม่ใช่ 45 ภาษาที่รองรับโดยกลไก macOS TTS
ซาฟารี
- ไม่ว่าจะดีขึ้นหรือแย่ลง พฤติกรรมของ Safari ส่วนใหญ่จะสอดคล้องกันระหว่างเวอร์ชันเดสก์ท็อปและเวอร์ชันมือถือ
- เสียงที่ดาวน์โหลดได้จะไม่แสดงในรายการที่ส่งคืนโดย Web Speech API (ปัญหาที่เกี่ยวข้อง)
- ที่แย่ไปกว่านั้นคือ เมื่อติดตั้งเสียงที่โหลดไว้ล่วงหน้าคุณภาพสูงขึ้น เสียงเหล่านี้จะหายไปใน Safari ซึ่งหมายความว่าทั้งภาษาอาจหายไปโดยสิ้นเชิง
- เสียงทั้งหมดคืนค่า
true
เป็น default
ใน Safari ซึ่งทำให้ไม่สามารถตรวจจับและเลือกค่าเริ่มต้นของระบบ/ผู้ใช้ได้ (ปัญหาที่เกี่ยวข้อง)
หน้าต่าง
- Microsoft มีหน้าที่มีประโยชน์มาก โดยแสดงรายการเสียงทั้งหมดที่มีใน Windows 10 และ 11 รวมทั้งหมด 98 เสียงใน 36 ภาษา
- เสียงที่เป็นธรรมชาติมอบประสบการณ์ที่ดีกว่ามาก แต่ต้องใช้ Windows 11 เวอร์ชันล่าสุดและจำเป็นต้องดาวน์โหลด (พร้อมข้อดีเพิ่มเติมคือสามารถทำงานแบบออฟไลน์ได้ด้วย)
- Microsoft ช้าในการเพิ่มเสียงที่เป็นธรรมชาติเหล่านี้ให้กับ Windows 11 โดยรวม จนกระทั่งเมื่อไม่นานมานี้ มีเพียงเสียงของสหรัฐฯ (3 เสียง) เท่านั้นที่มีอยู่ ขณะนี้รายการยาวขึ้นเล็กน้อย (23 เสียงใน 8 ภาษา) แต่ยังตามหลังสิ่งที่พวกเขานำเสนอผ่าน Edge (มากกว่า 250 เสียงใน 75 ภาษา)
- ขออภัย ขณะนี้เสียงที่มีคุณภาพสูงกว่าเหล่านี้ยังแสดงรายการไม่ถูกต้องใน Chrome หรือ Firefox ในขณะนี้ (ปัญหาที่เกี่ยวข้อง) พวกมันจะแสดงเฉพาะใน Edge เท่านั้น ซึ่งพวกมันจะถูกโหลดไว้ล่วงหน้าอยู่แล้ว แต่สำหรับการใช้งานออนไลน์อย่างเคร่งครัด