บทความนี้เผยแพร่โดยเป็นส่วนหนึ่งของไฟล์ Blogathon วิทยาศาสตร์ข้อมูล
บทนำ
คุณอาจใช้บ่อย Google ช่วย หรือแอปเปิ้ล สิริ หรือแม้กระทั่ง Amazon Alexa เพื่อค้นหาคำตอบอย่างรวดเร็วบนเว็บหรือเพียงแค่สั่งบางอย่าง ผู้ช่วย AI เหล่านี้เป็นที่รู้จักกันดีในการเข้าใจคำสั่งเสียงพูดของเราและทำงานที่ต้องการ พวกเขาตอบสนองต่อคำสั่งเสียงอย่างรวดเร็วเช่น "ตกลง Google เมืองหลวงของไอซ์แลนด์คืออะไร?” หรือ “เฮ้ สิริ ขอดูสูตรลาซานญ่าหน่อยค่ะ” และแสดงผลได้อย่างแม่นยำ คุณเคยสงสัยหรือไม่ว่าพวกเขาทำได้อย่างไร? วันนี้ เราจะสร้างระบบการรู้จำเสียงพูดที่เรียบง่าย ซึ่งใช้เสียงของเราเป็นอินพุต และสร้างข้อความที่เกี่ยวข้องโดยการฟังอินพุต
TLDR แสดงรหัสให้ฉันดู!
หากคุณใจร้อนเหมือนฉัน นี่คือซอร์สโค้ดเต็มรูปแบบที่สามารถคัดลอก วาง และดำเนินการผ่านไฟล์ Python ได้อย่างรวดเร็ว ตรวจสอบว่ามีไฟล์ชื่อ 'my-audio.wav' เป็นคำพูดของคุณ ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งไลบรารีทั้งหมดแล้ว
ในส่วนหลังของบทช่วยสอน เราจะพูดถึงสิ่งที่แต่ละบรรทัดกำลังทำ
นี่คือรหัส!
นำเข้าไฟฉาย นำเข้า librosa นำเข้า numpy เป็น np นำเข้าไฟล์เสียงเป็น sf จาก scipy.io นำเข้า wavfile จาก IPython.display นำเข้าเสียงจากหม้อแปลง นำเข้า Wav2Vec2ForCTC, Wav2Vec2Tokenizer
tokenizer = Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h") model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")
file_name = 'my-audio.wav'
data = wavfile.read(file_name) framerate = data[0] sounddata = data[1] เวลา = np.arange(0,len(sounddata))/framerate input_audio, _ = librosa.load(file_name, sr=16000) input_values = tokenizer (input_audio, return_tensors="pt").input_values logits = model (input_values).logits ที่ทำนายไว้_ids = torch.argmax(logits, dim=-1) การถอดความ = tokenizer.batch_decode(predicted_ids)[0] พิมพ์ (ถอดความ)
ก่อนที่เราจะเริ่ม
อย่าลืมตรวจสอบซอร์สโค้ดแบบเต็มของบทช่วยสอนนี้ใน Github repo นี้.
Wav2Vec: โมเดลการปฏิวัติ
เราจะใช้ เวฟทูเวค — แนวทางการรู้จำคำพูดที่ล้ำสมัยโดย Facebook
นักวิจัยที่ Facebook อธิบายแนวทางนี้ว่า:
มีภาษาพูดหลายพันภาษาทั่วโลก หลายภาษามีหลายภาษา ซึ่งถือเป็นความท้าทายครั้งใหญ่สำหรับการสร้างเทคโนโลยีการรู้จำเสียงพูดคุณภาพสูง เป็นไปไม่ได้เลยที่จะได้รับแหล่งข้อมูลสำหรับแต่ละภาษาและทุกภาษาจากขอบเขตที่เป็นไปได้มากมาย (คำพูดสำหรับการอ่าน คำพูดทางโทรศัพท์ ฯลฯ) wav2vec 2.0 รุ่นใหม่ของเรา ใช้การกำกับดูแลตนเองเพื่อขยายขอบเขตโดยการเรียนรู้จากข้อมูลการฝึกที่ไม่มีป้ายกำกับ เพื่อเปิดใช้งานระบบการรู้จำคำพูดสำหรับภาษา ภาษาถิ่น และโดเมนอีกมากมาย ด้วยข้อมูลการฝึกที่มีป้ายกำกับเพียงหนึ่งชั่วโมง wav2vec 2.0 มีประสิทธิภาพเหนือกว่ารุ่นก่อนหน้าในชุดย่อย 100 ชั่วโมงของเกณฑ์มาตรฐาน LibriSpeech โดยใช้ข้อมูลที่มีป้ายกำกับน้อยกว่า 100 เท่า
ไปเลย! Wav2Vec เป็นรูปแบบการควบคุมตนเองที่มีจุดมุ่งหมายเพื่อสร้างระบบการรู้จำเสียงพูดสำหรับหลายภาษาและหลายภาษา ด้วยข้อมูลการฝึกอบรมเพียงเล็กน้อย (น้อยกว่าป้ายประมาณ 100 เท่า) โมเดลนี้จึงมีประสิทธิภาพเหนือกว่าเกณฑ์มาตรฐานที่ล้ำสมัยก่อนหน้านี้
โมเดลนี้ เช่น BERT ได้รับการฝึกฝนโดยการคาดคะเนหน่วยคำพูดสำหรับเซ็กเมนต์เสียงที่ปิดบัง ในทางกลับกัน เสียงพูดเป็นสัญญาณต่อเนื่องที่จับคุณลักษณะหลายอย่างของการบันทึกโดยไม่แบ่งกลุ่มเป็นคำหรือหน่วยอื่นๆ อย่างชัดเจน Wav2vec 2.0 แก้ไขปัญหานี้โดยการเรียนรู้หน่วยพื้นฐาน 25ms เพื่อเรียนรู้การเป็นตัวแทนตามบริบทในระดับสูง จากนั้นหน่วยเหล่านี้จะนำไปใช้เพื่อกำหนดลักษณะการบันทึกเสียงพูดที่หลากหลาย เพื่อเพิ่มความทนทานของ wav2vec ด้วยข้อมูลการฝึกที่มีป้ายกำกับน้อยกว่า 100 เท่า เราจึงสามารถสร้างอัลกอริธึมการรู้จำเสียงได้เหนือกว่าแนวทางแบบกึ่งควบคุมที่ดีที่สุด ด้วยการเรียนรู้ด้วยตนเอง Wav2vec 2.0 เป็นส่วนหนึ่งของโมเดลการเรียนรู้ของเครื่องที่พึ่งพาอินพุตที่มีป้ายกำกับน้อยกว่า การกำกับดูแลตนเองได้ช่วยในการพัฒนาระบบการจำแนกภาพ ความเข้าใจในวิดีโอ และระบบการเข้าใจเนื้อหา อัลกอริธึมสามารถนำไปสู่ความก้าวหน้าในเทคโนโลยีเสียงพูดสำหรับภาษา ภาษาถิ่น และโดเมนที่หลากหลาย รวมถึงระบบปัจจุบัน
การเลือกสภาพแวดล้อมและห้องสมุดของเรา
เราจะใช้ ไพทอร์ชซึ่งเป็นเฟรมเวิร์กแมชชีนเลิร์นนิงแบบโอเพนซอร์สสำหรับการดำเนินการนี้ ในทำนองเดียวกัน เราจะใช้ หม้อแปลง, ห้องสมุดประมวลผลภาษาธรรมชาติที่ล้ำสมัยโดย กอดหน้า.
ด้านล่างนี้คือรายการข้อกำหนดทั้งหมดที่คุณอาจต้องการติดตั้งผ่าน pip ขอแนะนำให้คุณติดตั้งแพ็คเกจเหล่านี้ทั้งหมดภายใน a สภาพแวดล้อมเสมือนจริง ก่อนดำเนินการต่อ
- โน้ตบุ๊ค Jupyter
- ไฟฉาย
- ลิโบรซา
- นัมปี้
- ไฟล์เสียง
- สคิปปี้
- ไอไพธอน
- หม้อแปลง
การทำงานกับรหัส
เปิดสมุดบันทึก Jupyter ของคุณในขณะที่เปิดใช้งานสภาพแวดล้อมเสมือนที่มีไลบรารีที่จำเป็นทั้งหมดที่กล่าวถึงข้างต้น
เมื่อโหลดสมุดบันทึกแล้ว ให้สร้างไฟล์ใหม่และเริ่มนำเข้าไลบรารี
นำเข้าไฟฉาย นำเข้า librosa นำเข้า numpy เป็น np นำเข้าไฟล์เสียงเป็น sf จาก scipy.io นำเข้า wavfile จาก IPython.display นำเข้าเสียงจากหม้อแปลง นำเข้า Wav2Vec2ForCTC, Wav2Vec2Tokenizer
ตอนนี้เรานำเข้าไลบรารีทั้งหมดสำเร็จแล้ว ให้โหลดตัวสร้างโทเค็นและโมเดลของเรา เราจะใช้แบบจำลองที่ได้รับการฝึกอบรมล่วงหน้าสำหรับตัวอย่างนี้ โมเดลที่ได้รับการฝึกอบรมล่วงหน้าคือโมเดลที่ได้รับการฝึกอบรมจากบุคคลอื่นซึ่งเราสามารถนำกลับมาใช้ใหม่ได้ในระบบของเรา โมเดลที่เราจะนำเข้านั้นได้รับการฝึกฝนโดย Facebook
tokenizer = Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h") model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")
อาจใช้เวลาในการดาวน์โหลด
เมื่อเสร็จแล้ว คุณสามารถบันทึกเสียงของคุณและบันทึกไฟล์ wav ถัดจากไฟล์ที่คุณกำลังเขียนโค้ดของคุณ คุณสามารถตั้งชื่อเสียงของคุณเป็น “my-audio.wav”
file_name = 'my-audio.wav' เสียง (file_name)
ด้วยรหัสนี้ คุณสามารถเล่นเสียงของคุณในสมุดบันทึก Jupyter
ถัดไป: เราจะโหลดไฟล์เสียงของเราและตรวจสอบอัตราตัวอย่างและเวลาทั้งหมดของเรา
data = wavfile.read(file_name) framerate = data[0] sounddata = data[1] time = np.arange(0,len(sounddata))/framerate print('Sampling rate:',framerate,'Hz')
ผลลัพธ์จากตัวอย่างนี้จะแตกต่างไปจากของคุณ เนื่องจากคุณอาจใช้เสียงของคุณเอง
อัตราการสุ่มตัวอย่าง: 44100 Hz
สิ่งนี้ถูกพิมพ์ออกมาสำหรับเสียงตัวอย่างของฉัน
เราต้องแปลงอัตราตัวอย่างเป็น 16000 Hz เนื่องจากโมเดลของ Facebook ยอมรับอัตราการสุ่มตัวอย่างในช่วงนี้ เราจะขอความช่วยเหลือจาก Librosa ห้องสมุดที่เราได้ติดตั้งไว้ก่อนหน้านี้
input_audio, _ = librosa.load(ชื่อไฟล์, sr=16000)
ในที่สุด เสียงอินพุตจะถูกส่งไปยังเครื่องโทเค็นซึ่งจะถูกประมวลผลโดยโมเดล ผลลัพธ์สุดท้ายจะถูกเก็บไว้ในตัวแปรการถอดความ
input_values = tokenizer (input_audio, return_tensors="pt") .input_values logits = model (input_values).logits ทำนาย_ids = torch.argmax(logits, dim=-1) การถอดความ = tokenizer.batch_decode(predicted_ids)[0] พิมพ์ (ถอดความ)
ผลลัพธ์:
'การเรียนรู้อย่างลึกซึ้งนั้นน่าทึ่ง'
นั่นคือสิ่งที่ฉันได้บันทึกไว้ในไฟล์ my-audio.wav
ดำเนินการต่อและลองบันทึกคำพูดของคุณเองและเรียกใช้โค้ดบล็อกสุดท้ายอีกครั้ง ควรทำงานภายในไม่กี่วินาที
เกี่ยวกับผู้เขียน:
สวัสดี! ฉันชื่อ Akash และทำงานเป็นนักพัฒนา Python มานานกว่า 4 ปีแล้ว ในเส้นทางอาชีพของฉัน ฉันเริ่มเป็น Junior Python Developer ที่ไซต์พอร์ทัลงานที่ใหญ่ที่สุดของเนปาล มีโรจ็อบ. ต่อมา ฉันมีส่วนร่วมใน Data Science และการวิจัยที่บริษัทแชร์รถแห่งแรกของเนปาล ฟัน. ปัจจุบัน ฉันมีส่วนร่วมอย่างแข็งขันในด้าน Data Science รวมถึงการพัฒนาเว็บกับ Django
คุณสามารถค้นหาโครงการอื่นๆ ของฉันได้ที่:
https://github.com/akashadhikari
เชื่อมต่อกับฉันใน LinkedIn
https://www.linkedin.com/in/akashadh/
อีเมล: [ป้องกันอีเมล] | [ป้องกันอีเมล]
เว็บไซต์ (กำลังทำงานในบล็อก Data Science): https://akashadhikari.github.io/
แหล่งรูปภาพ:
ภาพที่ 1 – https://www.bullfrag.com/how-to-program-google-assistant-commands-type-ok-google-turn-off-the-lights-in-10-minutes/
ภาพที่ 2 – https://www.bullfrag.com/how-to-program-google-assistant-commands-type-ok-google-turn-off-the-lights-in-10-minutes/
หมายเหตุท้าย:
ขอขอบคุณสำหรับการอ่าน!
ฉันหวังว่าคุณจะสนุกกับการอ่านบทความ หากคุณพบว่ามีประโยชน์ โปรดแบ่งปันกับเพื่อนของคุณบนโซเชียลมีเดียด้วย สำหรับข้อสงสัย ข้อเสนอแนะ การวิพากษ์วิจารณ์เชิงสร้างสรรค์ หรือการอภิปรายอื่น ๆ โปรดส่ง Ping มาหาฉันที่นี่ในความคิดเห็นหรือติดต่อฉันโดยตรงทางอีเมล
ที่เกี่ยวข้อง
- '
- 100
- 100x
- AI
- ขั้นตอนวิธี
- อัลกอริทึม
- ทั้งหมด
- อเมซอน
- ในหมู่
- Apple
- รอบ
- ศิลปะ
- บทความ
- เสียง
- มาตรฐาน
- ที่ใหญ่ที่สุด
- บล็อก
- สร้าง
- การก่อสร้าง
- เมืองหลวง
- ความก้าวหน้า
- ท้าทาย
- การจัดหมวดหมู่
- รหัส
- ความคิดเห็น
- บริษัท
- เนื้อหา
- ปัจจุบัน
- ข้อมูล
- วิทยาศาสตร์ข้อมูล
- การเรียนรู้ลึก ๆ
- ผู้พัฒนา
- พัฒนาการ
- Django
- โดเมน
- อีเมล
- สิ่งแวดล้อม
- ฯลฯ
- คุณสมบัติ
- เฟด
- ชื่อจริง
- กรอบ
- เต็ม
- GitHub
- โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- HTTPS
- ใหญ่
- ภาพ
- การนำเข้า
- ร่วมมือ
- IT
- การสัมภาษณ์
- โน้ตบุ๊ค Jupyter
- ภาษา
- ภาษา
- นำ
- เรียนรู้
- การเรียนรู้
- ห้องสมุด
- รายการ
- โหลด
- เรียนรู้เครื่อง
- ภาพบรรยากาศ
- แบบ
- ภาษาธรรมชาติ
- ประมวลผลภาษาธรรมชาติ
- ใบสั่ง
- อื่นๆ
- ปิง
- พอร์ทัล
- โครงการ
- หลาม
- พิสัย
- การอ่าน
- สูตร
- ความต้องการ
- การวิจัย
- แหล่งข้อมูล
- การแบ่งปันรถ
- วิทยาศาสตร์
- Share
- ง่าย
- siri
- สังคม
- โซเชียลมีเดีย
- การรู้จำเสียง
- สถานะ
- ระบบ
- ระบบ
- เทคโนโลยี
- เวลา
- ไฟฉาย
- การฝึกอบรม
- เกี่ยวกับการสอน
- วีดีโอ
- เสมือน
- เสียงพูด
- การรับรู้เสียง
- เว็บ
- ความหมายของ
- ภายใน
- คำ
- งาน
- โลก
- การเขียน
- ปี