แยกสาย SSML ออกเป็นแบทช์ AWS POLLY ÁNDข้อความของ Google เป็นคำพูด API สามารถบริโภคได้
hardLimit. , ; หรือพื้นที่ สามารถกำหนดค่าได้ขึ้นอยู่กับ Polly-ssml-split โดย @oleglegun
ติดตั้งแพ็คเกจด้วย:
npm install ssml-split --save นำเข้าแพ็คเกจและตั้งค่าตัวเลือก ใช้เมธอด .split() เพื่อแยกสตริง SSML ของคุณ คุณสามารถปรับแต่ง softLimit เพื่อดูว่าอะไรเหมาะกับคุณ ฉันขอแนะนำให้คุณรักษา hardLimit ไว้ที่ขีด จำกัด ของ API ที่เกี่ยวข้อง:
import SSMLSplit from 'ssml-split' ;
const ssmlSplit = new SSMLSplit ( {
// The service you are using: "google" or "aws"
synthesizer : 'google' ,
// Finds a possible split moment starting from 4000 characters
softLimit : 4000 ,
// Google Text to Speech limitation
hardLimit : 5000 ,
// Allow to split large paragraphs, set to false to keep your <p></p> intact
breakParagraphsAboveHardLimit : true
} ) ;
const batches = ssmlSplit . split ( '<speak>your long ssml here</speak>' ) ;| ตัวเลือก | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
synthesizer | string | aws | ตั้งค่าเป็นซินธิไซเซอร์ที่คุณใช้ มีประโยชน์สำหรับเมื่อคุณใช้ breakParagraphsAboveHardLimit ช่วยให้ไลบรารีสามารถกำหนดความยาวของการแบ่งที่ถูกต้องซึ่งแตกต่างกันต่อบริการสังเคราะห์ |
softLimit | number | 1500 | จำนวนอักขระที่สคริปต์จะเริ่มพยายามแยก SSML ของคุณในหลายส่วน คุณสามารถปรับแต่งหมายเลขนี้เพื่อดูว่าอะไรเหมาะกับคุณ |
hardLimit | number | 3000 | จำนวนอักขระที่สคริปต์ควรอยู่ต่ำกว่าขนาดสูงสุดต่อส่วน SSML หากขนาดแบทช์ใด ๆ อยู่เหนือสิ่งนี้สคริปต์จะเกิดข้อผิดพลาด ขีด จำกัด ยากนี้คือขีด จำกัด ของตัวละครของ AWS หรือ Google API ที่คุณใช้ |
breakParagraphsAboveHardLimit | boolean | false | ตั้งค่าเป็น true เพื่อให้สคริปต์แบ่งย่อหน้าขนาดใหญ่โดยการลบ <p> และแทนที่ </p> ด้วย <break strength="x-strong" /> (สำหรับ aws ) หรือ <break strength="x-weak" /> (สำหรับ google ) ซึ่งส่งผลให้หยุดชั่วคราวเดียวกัน ต้องตั้งค่าตัวเลือก synthesizer |
extraSplitChars | string | ,;. | อักขระที่สามารถใช้เป็นเครื่องหมายแยกสำหรับข้อความธรรมดา |
โดยใช้ตัวเลือก synthesizer: 'google' ไลบรารีจะรวมถึงการนับอักขระแท็ก SSML เพื่อกำหนดช่วงเวลาแยกที่ดีที่สุดเท่าที่จะเป็นไปได้ สิ่งนี้ทำให้ไลบรารียังทำงานร่วมกับข้อความของ Google to Speech API
ตัวอย่างเช่น: <speak><p>some text</p></speak>
พฤติกรรมเริ่มต้นจะนับว่าเป็น 9 อักขระซึ่งเป็นสิ่งที่ดีสำหรับ AWS Polly แต่ไม่ใช่สำหรับข้อความของ Google to Speech API
ด้วย synthesizer: 'google' มันจะนับเป็นอักขระ 31 ตัวเช่นเดียวกับข้อความของ Google to Speech API นับ
สิ่งนี้ควรป้องกันไม่ให้คุณเห็นข้อผิดพลาดนี้เมื่อใช้ข้อความของ Google กับ Speech API:
INVALID_ARGUMENT: 5000 characters limit exceeded. โดยการเพิ่มตัวเลือก breakParagraphsAboveHardLimit: true คุณอนุญาตให้สคริปต์แบ่งย่อหน้าขนาดใหญ่โดยการลบ <p> และแทนที่ </p> ด้วย <break strength="x-strong" /> สำหรับ aws หรือ <break strength="x-weak" /> สำหรับ Google ซึ่งส่งผลให้หยุดชั่วคราวเดียวกัน สิ่งนี้ช่วยให้ห้องสมุดสามารถแยกย่อหน้าขนาดใหญ่ได้อย่างเหมาะสม
การใช้ตัวเลือกนี้จะส่งผลให้มีอักขระอีก 20 ตัวต่อวรรคเพื่อการใช้งานของคุณเมื่อใช้ข้อความของ Google กับ API คำพูดของ Google
หากคุณทำงานกับย่อหน้าขนาดใหญ่และคุณไม่ได้ใช้ตัวเลือกนี้คุณอาจพบข้อผิดพลาดเช่น SSML tag appeared to be too long
แนะนำให้ใช้ตัวเลือกนี้เมื่อคุณมีความยาว SSML ที่อยู่เหนือ hardLimit
new SSMLSplit ( {
synthesizer : 'aws' ,
softLimit : 2000 ,
hardLimit : 3000 , // AWS Polly limitation
breakParagraphsAboveHardLimit : true , // optional, but recommended when you have large <p>'s
} ) new SSMLSplit ( {
synthesizer : 'google' ,
softLimit : 4000 ,
hardLimit : 5000 , // Google Text to Speech API limitation
breakParagraphsAboveHardLimit : true , // optional, but recommended when you have large <p>'s
} ) Polly-ssml-split โดย @oleglegun library จัดการการแยก SSML อย่างถูกต้องสำหรับ AWS Polly แต่ไม่ทำงานอย่างถูกต้องสำหรับข้อความของ Google ต่อการพูด ดังนั้นฉันจึงปรับเปลี่ยนแพ็คเกจให้เหมาะกับความต้องการของฉัน
polly-ssml-split :synthesizer เพื่อนับอักขระตามแท็ก SSML ที่สมบูรณ์และไม่ใช่แค่อักขระข้อความที่รวมอยู่ด้วย ซึ่งจำเป็นถ้าคุณทำงานกับข้อความของ Google เป็นคำพูด API.configure และใช้วิธีตัวสร้างคลาสแทนbreakParagraphsAboveHardLimit เพื่อแยกย่อหน้าขนาดใหญ่โดยการลบ <p> และแทนที่ </p> ด้วย <break strength="x-strong" /> สำหรับ aws หรือ <break strength="x-weak" /> สำหรับ Google ซึ่งส่งผลให้หยุดชั่วคราวเดียวกัน สิ่งนี้ช่วยให้ห้องสมุดสามารถแยกย่อหน้าอย่างถูกต้องและส่งชุดที่น้อยลงไปยังข้อความไปยังคำพูด APIการสนับสนุนใด ๆ ก็ชื่นชม! โปรดอ่านการสนับสนุนของเรา MD เกี่ยวกับวิธีการมีส่วนร่วม
ใช้วิธีการทดสอบที่ขับเคลื่อนด้วยการพัฒนาคุณสมบัติใหม่หรือแก้ไขข้อบกพร่อง
พัฒนา:
$ npm install
$ npm run devเรียกใช้การทดสอบเกี่ยวกับการเปลี่ยนไฟล์:
$ npm test:watchสร้าง typescript เป็น JavaScript:
$ npm run buildเรียกใช้การทดสอบทั้งหมด:
$ npm test