ลองนึกภาพศัลยแพทย์กำลังสนทนาทางวิดีโอกับผู้ป่วยทั่วโลกโดยไม่จำเป็นต้องใช้คนแปล จะเกิดอะไรขึ้นหากสตาร์ทอัพที่เพิ่งเริ่มต้นสามารถขยายผลิตภัณฑ์ของตนข้ามพรมแดนและเข้าสู่ตลาดทางภูมิศาสตร์ใหม่ ๆ ได้โดยง่าย โดยนำเสนอการสนับสนุนและการขายลูกค้าที่คล่องแคล่ว แม่นยำ และพูดได้หลายภาษา ทั้งหมดนี้โดยไม่ต้องใช้นักแปลที่เป็นมนุษย์ จะเกิดอะไรขึ้นกับธุรกิจของคุณเมื่อคุณไม่ผูกมัดด้วยภาษาอีกต่อไป
เป็นเรื่องปกติในปัจจุบันที่จะมีการประชุมเสมือนจริงกับทีมต่างประเทศและลูกค้าที่พูดภาษาต่างๆ มากมาย ไม่ว่าจะเป็นการประชุมภายในหรือภายนอก ความหมายมักจะหายไปในการอภิปรายที่ซับซ้อน และคุณอาจพบกับอุปสรรคทางภาษาที่ขัดขวางไม่ให้คุณมีประสิทธิภาพเท่าที่ควร
ในโพสต์นี้ คุณจะได้เรียนรู้วิธีใช้บริการของ AWS ที่มีการจัดการเต็มรูปแบบสามบริการ (ถอดความจากอเมซอน, อเมซอนแปลภาษาและ Amazon Polly) เพื่อผลิตโซลูชันตัวแปลคำพูดเป็นคำพูดที่เกือบจะเรียลไทม์ ซึ่งสามารถแปลการป้อนข้อมูลด้วยเสียงสดของผู้พูดแหล่งที่มาเป็นภาษาเป้าหมายที่พูด ถูกต้อง และแปลได้อย่างรวดเร็ว ทั้งหมดนี้ไม่มีประสบการณ์การเรียนรู้ด้วยเครื่อง (ML)
ภาพรวมของโซลูชัน
นักแปลของเราประกอบด้วยบริการ AWS ML ที่มีการจัดการเต็มรูปแบบสามบริการที่ทำงานร่วมกันในสคริปต์ Python เดียวโดยใช้ AWS SDK สำหรับ Python (Boto3) สำหรับการแปลข้อความและส่วนของข้อความเป็นคำพูดของเรา และ SDK สตรีมมิงแบบอะซิงโครนัสสำหรับการถอดความอินพุตเสียง
Amazon Transcribe: สตรีมเสียงพูดเป็นข้อความ
บริการแรกที่คุณใช้ในสแตกของเราคือ Amazon Transcribe ซึ่งเป็นบริการแปลงเสียงพูดเป็นข้อความที่มีการจัดการเต็มรูปแบบซึ่งจะนำเสียงพูดที่ป้อนเข้าและแปลงเป็นข้อความ Amazon Transcribe มีวิธีการนำเข้าที่ยืดหยุ่น แบทช์หรือการสตรีม เนื่องจากยอมรับไฟล์เสียงที่จัดเก็บไว้หรือการสตรีมข้อมูลเสียง ในโพสต์นี้คุณใช้ อะซิงโครนัส Amazon Transcribe การสตรีม SDK สำหรับ Pythonซึ่งใช้โปรโตคอลการสตรีม HTTP/2 เพื่อสตรีมเสียงสดและรับการถอดเสียงแบบสด
เมื่อเราสร้างต้นแบบนี้ครั้งแรก การส่งผ่านข้อมูลแบบสตรีมของ Amazon Transcribe ไม่รองรับการตรวจจับภาษาอัตโนมัติ แต่จะไม่มีกรณีนี้อีกต่อไปในเดือนพฤศจิกายน 2021 การนำเข้าทั้งแบบชุดและแบบสตรีมรองรับการตรวจจับภาษาอัตโนมัติสำหรับทุกคน ภาษาที่รองรับ. ในโพสต์นี้ เราแสดงให้เห็นว่าโซลูชันแบบอิงพารามิเตอร์ได้อย่างไร แม้ว่าการออกแบบแบบไม่มีพารามิเตอร์หลายภาษาแบบไร้รอยต่อสามารถทำได้โดยใช้การสตรีมการตรวจจับภาษาอัตโนมัติ หลังจากที่ส่งคืนส่วนคำพูดที่ถอดเสียงเป็นข้อความแล้ว คุณส่งคำขอไปที่ Amazon Translate เพื่อแปลและส่งคืนผลลัพธ์ใน Amazon Transcribe EventHandler
วิธี
Amazon Translate: API การแปลที่ล้ำสมัยและมีการจัดการเต็มรูปแบบ
ถัดไปในกลุ่มของเราคือ Amazon Translate ซึ่งเป็นบริการแปลภาษาด้วยเครื่องประสาทที่ให้การแปลภาษาที่รวดเร็ว คุณภาพสูง ราคาไม่แพง และปรับแต่งได้ ในเดือนมิถุนายน 2022 Amazon Translate รองรับการแปลใน 75 ภาษา โดยมีคู่ภาษาใหม่และการปรับปรุงอย่างต่อเนื่อง Amazon Translate ใช้โมเดลการเรียนรู้เชิงลึกที่โฮสต์บนสถาปัตยกรรม AWS Cloud ที่ปรับขนาดได้สูงและยืดหยุ่นได้ เพื่อส่งมอบการแปลที่แม่นยำอย่างรวดเร็วทั้งในแบบเรียลไทม์หรือแบบกลุ่ม ขึ้นอยู่กับกรณีการใช้งานของคุณ การใช้ Amazon Translate นั้นตรงไปตรงมาและไม่ต้องการการจัดการสถาปัตยกรรมพื้นฐานหรือทักษะ ML Amazon Translate มีคุณสมบัติหลายอย่าง เช่น การสร้างและการใช้ a คำศัพท์ที่กำหนดเอง เพื่อจัดการการทำแผนที่ระหว่างข้อกำหนดเฉพาะของอุตสาหกรรม สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขีดจำกัดบริการของ Amazon Translate โปรดดูที่ แนวทางและข้อจำกัด. หลังจากที่แอปพลิเคชันได้รับข้อความที่แปลแล้วในภาษาเป้าหมายของเรา แอปพลิเคชันจะส่งข้อความที่แปลแล้วไปยัง Amazon Polly เพื่อเล่นเสียงที่แปลทันที
Amazon Polly: API การแปลงข้อความเป็นคำพูดที่มีการจัดการเต็มรูปแบบ
สุดท้าย คุณส่งข้อความที่แปลแล้วไปยัง Amazon Polly ซึ่งเป็นบริการแปลงข้อความเป็นคำพูดที่มีการจัดการเต็มรูปแบบ ซึ่งสามารถส่งกลับเสียงตอบกลับคลิปเสียงที่เหมือนจริงสำหรับการเล่นสตรีมแบบทันทีหรือจัดกลุ่มและบันทึกไว้ใน บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (Amazon S3) เพื่อใช้ในภายหลัง คุณสามารถควบคุมคำพูดในด้านต่างๆ เช่น การออกเสียง ระดับเสียง ระดับเสียง อัตราการพูด และอื่นๆ โดยใช้มาตรฐาน ภาษามาร์กอัปการสังเคราะห์เสียง (ส.ส.ม.).
คุณสามารถสังเคราะห์เสียงพูดสำหรับ Amazon Polly บางอย่างได้ เสียงประสาท โดยใช้รูปแบบผู้ประกาศข่าวเพื่อให้เสียงเหมือนผู้ประกาศข่าวทางโทรทัศน์หรือวิทยุ คุณยังสามารถตรวจจับได้เมื่อมีการพูดคำหรือประโยคเฉพาะในข้อความโดยอิงจากข้อมูลเมตาที่รวมอยู่ในสตรีมเสียง ซึ่งช่วยให้นักพัฒนาสามารถซิงโครไนซ์การเน้นกราฟิกและแอนิเมชั่น เช่น การเคลื่อนไหวของริมฝีปากของอวาตาร์ กับคำพูดที่สังเคราะห์ได้
คุณสามารถแก้ไขการออกเสียงของคำบางคำได้ เช่น ชื่อบริษัท ตัวย่อ คำต่างประเทศ หรือ neologisms เช่น “P!nk,” “ROTFL” หรือ “C'est la vie” (เมื่อพูดในภาษาที่ไม่ใช่ภาษาฝรั่งเศส เสียง) โดยใช้ศัพท์เฉพาะที่กำหนดเอง
ภาพรวมสถาปัตยกรรม
ไดอะแกรมต่อไปนี้แสดงสถาปัตยกรรมโซลูชันของเรา
เวิร์กโฟลว์มีดังนี้:
- เสียงถูกนำเข้าโดย Python SDK
- Amazon Polly แปลงคำพูดเป็นข้อความใน 39 ภาษาที่เป็นไปได้
- Amazon Translate แปลงภาษา
- Amazon Live Transcribe แปลงข้อความเป็นคำพูด
- เสียงจะถูกส่งออกไปยังลำโพง
เบื้องต้น
คุณต้องมีเครื่องโฮสต์ที่ติดตั้งไมโครโฟน ลำโพง และการเชื่อมต่ออินเทอร์เน็ตที่เชื่อถือได้ แล็ปท็อปสมัยใหม่น่าจะทำงานได้ดีเพราะไม่จำเป็นต้องใช้ฮาร์ดแวร์เพิ่มเติม ถัดไป คุณต้องตั้งค่าเครื่องด้วยเครื่องมือซอฟต์แวร์บางอย่าง
คุณต้องติดตั้ง Python 3.7+ เพื่อใช้การสตรีม SDK ของ Amazon Transcribe แบบอะซิงโครนัสและสำหรับโมดูล Python ที่เรียกว่า pyaudio
ซึ่งคุณใช้ควบคุมไมโครโฟนและลำโพงของเครื่อง โมดูลนี้ขึ้นอยู่กับไลบรารี C ที่เรียกว่า portaudio.h
. หากคุณประสบปัญหากับ pyaudio
ข้อผิดพลาด เราแนะนำให้ตรวจสอบระบบปฏิบัติการของคุณเพื่อดูว่าคุณมี portaudio.h
ติดตั้งห้องสมุดแล้ว
สำหรับการอนุญาตและการรับรองความถูกต้องของการเรียกบริการ คุณสร้าง AWS Identity และการจัดการการเข้าถึง บทบาทบริการ (IAM) ที่มีสิทธิ์เรียกใช้บริการของ AWS ที่จำเป็น โดยการกำหนดค่า อินเทอร์เฟซบรรทัดคำสั่ง AWS AWS (AWS CLI) ด้วยบทบาทบริการ IAM นี้ คุณสามารถเรียกใช้สคริปต์ของเราบนเครื่องของคุณโดยไม่ต้องส่งคีย์หรือรหัสผ่าน เนื่องจากไลบรารี AWS นั้นเขียนขึ้นเพื่อใช้ข้อมูลประจำตัวของผู้ใช้ AWS CLI ที่กำหนดค่าไว้ นี่เป็นวิธีที่สะดวกสำหรับการสร้างต้นแบบอย่างรวดเร็ว และทำให้แน่ใจว่าบริการของเราถูกเรียกโดยข้อมูลประจำตัวที่ได้รับอนุญาต และเช่นเคย ให้ปฏิบัติตามหลักการของสิทธิพิเศษน้อยที่สุดเมื่อกำหนดนโยบาย IAM เมื่อสร้างผู้ใช้หรือบทบาท IAM
เพื่อสรุป คุณต้องมีข้อกำหนดเบื้องต้นต่อไปนี้:
- เครื่อง PC, Mac หรือ Linux พร้อมไมโครโฟน ลำโพง และการเชื่อมต่ออินเทอร์เน็ต
- พื้นที่
portaudio.h
ไลบรารี C สำหรับระบบปฏิบัติการของคุณ (brew, apt get, wget) ซึ่งจำเป็นสำหรับ pyaudio ในการทำงาน - AWS CLI 2.0 พร้อมผู้ใช้ IAM ที่ได้รับอนุญาตอย่างถูกต้องซึ่งกำหนดค่าโดยการเรียกใช้ aws กำหนดค่าใน AWS CLI
- หลาม 3.7+
- Amazon Transcribe Python SDK แบบอะซิงโครนัส
- ไลบรารี Python ต่อไปนี้:
boto3
amazon-transcribe
pyaudio
asyncio
concurrent
ดำเนินการแก้ปัญหา
คุณจะต้องใช้ Amazon Transcribe สตรีมมิ่ง SDK แบบอะซิงโครนัสสำหรับ Python เป็นจุดเริ่มต้น และกำลังจะสร้างบน SDK เฉพาะนั้น หลังจากที่คุณได้ทดลองกับสตรีมมิ่ง SDK สำหรับ Python แล้ว ให้คุณเพิ่ม สตรีมไมโครโฟน ป้อนข้อมูลโดยใช้ pyaudio
ซึ่งเป็นไลบรารีโอเพ่นซอร์ส Python ที่ใช้กันทั่วไปซึ่งใช้สำหรับจัดการข้อมูลเสียง จากนั้นคุณเพิ่มการโทร Boto3 ไปที่ Amazon Translate และ Amazon Polly สำหรับฟังก์ชันการแปลและการแปลงข้อความเป็นคำพูดของเรา สุดท้าย คุณสตรีมคำพูดที่แปลแล้วผ่านลำโพงของคอมพิวเตอร์อีกครั้งด้วย pyaudio
. โมดูล Python concurrent
ให้คุณสามารถเรียกใช้โค้ดการบล็อกในเธรดแบบอะซิงโครนัสของตัวเองเพื่อเล่นเสียงพูดของ Amazon Polly ที่ส่งคืนด้วยวิธีที่ราบรื่นและไม่มีการบล็อก
มานำเข้าโมดูลที่จำเป็นทั้งหมดของเรา ถอดเสียงคลาสการสตรีม และสร้างอินสแตนซ์โกลบอลบางส่วน:
ก่อนอื่นคุณใช้ pyaudio
เพื่อรับอัตราการสุ่มตัวอย่างอุปกรณ์อินพุต ดัชนีอุปกรณ์ และจำนวนช่อง:
หากไม่ได้ผล คุณยังสามารถวนซ้ำและพิมพ์อุปกรณ์ของคุณตามที่แสดงในรหัสต่อไปนี้ จากนั้นใช้ดัชนีอุปกรณ์เพื่อดึงข้อมูลอุปกรณ์ด้วย pyaudio
:
คุณใช้ channel_count
, sample_rate
และ dev_index
เป็นพารามิเตอร์ในสตรีมไมค์ ในฟังก์ชันเรียกกลับของสตรีมนั้น คุณใช้ an asyncio
nonblocking thread-safe callback เพื่อใส่ไบต์อินพุตของสตรีมไมค์ลงใน an asyncio
คิวอินพุต จดบันทึกลูปและวัตถุ input_queue ที่สร้างด้วย asyncio
และวิธีการใช้ในรหัสต่อไปนี้:
ตอนนี้เมื่อเครื่องกำเนิดไฟฟ้าทำงาน mic_stream()
ถูกเรียก มันให้ผลลัพธ์อย่างต่อเนื่องตราบใดที่มีข้อมูลอินพุตไมโครโฟนในคิวอินพุต
ตอนนี้ คุณรู้วิธีรับไบต์อินพุตจากไมโครโฟนแล้ว มาดูวิธีเขียนไบต์ของเสียงที่ส่งออกของ Amazon Polly ไปยังสตรีมเอาท์พุตของลำโพงกัน:
ตอนนี้เรามาขยายสิ่งที่คุณสร้างในโพสต์กัน Amazon Transcribe Streaming SDK แบบอะซิงโครนัสสำหรับ Python. ในรหัสต่อไปนี้ คุณสร้างวัตถุตัวดำเนินการโดยใช้ ThreadPoolExecutor
คลาสย่อยที่มีคนงานสามคนพร้อมกัน จากนั้นคุณเพิ่มการเรียกของ Amazon Translate บนทรานสคริปต์ที่ส่งคืนที่สรุปผลแล้วใน EventHandler และส่งต่อข้อความที่แปลแล้ว ออบเจ็กต์ตัวดำเนินการ และ aws_polly_tts()
ทำหน้าที่ asyncio
วนด้วย loop.run_in_executor()
ซึ่งเรียกใช้ฟังก์ชัน Amazon Polly ของเรา (พร้อมข้อความอินพุตที่แปลแล้ว) แบบอะซิงโครนัสเมื่อเริ่มต้นการวนซ้ำครั้งถัดไปของ asyncio
ห่วง
ในที่สุดเราก็มี loop_me()
การทำงาน. ในนั้นคุณกำหนด write_chunks()
ซึ่งรับสตรีม Amazon Transcribe เป็นอาร์กิวเมนต์ และเขียนส่วนของสตรีมมิงอินพุตแบบสตรีมไปยังสตรีมแบบอะซิงโครนัส จากนั้นคุณใช้ MyEventHandler()
ด้วยกระแสการถอดความผลลัพธ์เป็นอาร์กิวเมนต์และสร้างวัตถุตัวจัดการ จากนั้นคุณใช้รอกับ asyncio.gather()
และส่งผ่าน write_chunks() และ handler ด้วยเมธอด handle_events() เพื่อจัดการฟิวเจอร์สในที่สุดของ coroutines เหล่านี้ สุดท้าย คุณรวบรวมลูปเหตุการณ์ทั้งหมดและวนรอบ loop_me()
ฟังก์ชั่นด้วย run_until_complete()
. ดูรหัสต่อไปนี้:
เมื่อโค้ดก่อนหน้าทำงานร่วมกันโดยไม่มีข้อผิดพลาด คุณสามารถพูดใส่ไมโครโฟนและฟังเสียงที่แปลเป็นภาษาจีนกลางได้อย่างรวดเร็ว คุณสมบัติการตรวจจับภาษาอัตโนมัติสำหรับ Amazon Transcribe และ Amazon Translate จะแปลภาษาอินพุตที่รองรับเป็นภาษาเป้าหมาย คุณสามารถพูดได้สักระยะหนึ่งและเนื่องจากการเรียกใช้ฟังก์ชันที่ไม่มีการปิดกั้น การป้อนข้อมูลด้วยคำพูดทั้งหมดของคุณจึงได้รับการแปลและพูด ทำให้เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการแปลสุนทรพจน์สด
สรุป
แม้ว่าโพสต์นี้จะแสดงให้เห็นว่า AWS API ที่มีการจัดการเต็มรูปแบบทั้งสามนี้สามารถทำงานร่วมกันได้อย่างราบรื่นอย่างไร เราขอแนะนำให้คุณคิดว่าคุณจะใช้บริการเหล่านี้ด้วยวิธีอื่นๆ ได้อย่างไรเพื่อให้บริการสนับสนุนหลายภาษาสำหรับบริการหรือสื่อ เช่น คำบรรยายใต้ภาพแบบหลายภาษาสำหรับค่าใช้จ่ายในปัจจุบันเพียงเล็กน้อย . การแพทย์ ธุรกิจ และแม้กระทั่งความสัมพันธ์ทางการฑูตทั้งหมดสามารถได้รับประโยชน์จากบริการแปลที่มีต้นทุนต่ำและบำรุงรักษาต่ำ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการพิสูจน์ฐานรหัสแนวคิดสำหรับกรณีการใช้งานนี้ โปรดดูที่ Github.
เกี่ยวกับผู้เขียน
ไมเคิล ทราน เป็นสถาปนิกโซลูชันพร้อมทีม Envision Engineering ที่ Amazon Web Services เขาให้คำแนะนำทางเทคนิคและช่วยลูกค้าเร่งความสามารถในการสร้างสรรค์ผ่านการแสดงศิลปะที่เป็นไปได้บน AWS เขาได้สร้างต้นแบบหลายตัวเกี่ยวกับ AI/ML และ IoT สำหรับลูกค้าของเรา คุณสามารถติดต่อฉัน @Mike_Trann บน Twitter
คาเมรอน วิลค์ส เป็นสถาปนิกต้นแบบในทีม AWS Industry Accelerator ขณะอยู่ในทีม เขาได้ส่งต้นแบบ ML หลายตัวให้กับลูกค้าเพื่อสาธิต "ศิลปะแห่งความเป็นไปได้" ของ ML บน AWS เขาชอบผลิตเพลง ออฟโรด และการออกแบบ
- AI
- ไอ อาร์ต
- เครื่องกำเนิดไออาร์ท
- หุ่นยนต์ไอ
- Amazon Polly
- ถอดความจากอเมซอน
- อเมซอนแปลภาษา
- ปัญญาประดิษฐ์
- ใบรับรองปัญญาประดิษฐ์
- ปัญญาประดิษฐ์ในการธนาคาร
- หุ่นยนต์ปัญญาประดิษฐ์
- หุ่นยนต์ปัญญาประดิษฐ์
- ซอฟต์แวร์ปัญญาประดิษฐ์
- AWS Machine Learning AWS
- blockchain
- การประชุม blockchain ai
- เหรียญอัจฉริยะ
- ปัญญาประดิษฐ์สนทนา
- การประชุม crypto ai
- ดัล-อี
- การเรียนรู้ลึก ๆ
- google ai
- เรียนรู้เครื่อง
- เพลโต
- เพลโตไอ
- เพลโตดาต้าอินเทลลิเจนซ์
- เกมเพลโต
- เพลโตดาต้า
- เพลโตเกม
- ขนาดไอ
- วากยสัมพันธ์
- วิธีการทางเทคนิค
- ลมทะเล