นี่คือตัวอย่างการใช้งาน WebApp ของ OpenAI Whisper ซึ่งเป็นระบบการรู้จำเสียงพูดอัตโนมัติ (ASR) โดยใช้ Next.js.
มันจะบันทึกข้อมูลเสียงโดยอัตโนมัติและอัปโหลดข้อมูลเสียงไปยังเซิร์ฟเวอร์สำหรับการถอดความ/การแปลจากนั้นส่งกลับผลลัพธ์กลับไปที่ส่วนหน้า นอกจากนี้ยังเป็นไปได้ที่จะเล่นเสียงที่บันทึกไว้เพื่อตรวจสอบผลลัพธ์
UPDATE: หากคุณต้องการใช้
Next 13
โดยเปิดใช้งานคุณสมบัติการทดลอง (APPDIR) โปรดตรวจสอบ OpenAI-Whisper-API แทน เพียงแค่ตั้งค่าสถานะให้ใช้โมดูล Whisper Python แทน Whisper API
การใช้ OpenAI
Speech to Text API โปรดตรวจสอบ Openai-Whisper-API
หากคุณกำลังมองหาแอพ Voice-Chat โดยใช้ Whisper
โปรดตรวจสอบ Openai-Whisper-Talk
สำหรับเวอร์ชัน Nuxt.js
โปรดตรวจสอบ openai-chatterbox
มีการกล่าวกันว่า Whisper
นั้นไม่ได้ถูกออกแบบมาเพื่อสนับสนุนงานสตรีมมิ่งแบบ เรียล ไทม์ แต่ก็ไม่ได้หมายความว่าเราไม่สามารถลองได้
ดังนั้นโครงการนี้เป็นความพยายามของฉันในการสร้างเว็บแอปพลิเคชั่น Transcriber แบบเรียลไทม์ โดยใช้ Openai Whisper
ประสิทธิภาพที่ขึ้นอยู่กับว่าเซิร์ฟเวอร์สามารถถอด/แปลเสียงได้เร็วแค่ไหน
ฉันใช้ Next.js
เพื่อที่ฉันจะได้ไม่ต้องสร้างแอพแบ็กเอนด์และส่วนหน้าแยกต่างหาก
สำหรับแบ็กเอนด์ฉันใช้ exec
เพื่อเรียกใช้งานคำสั่ง Shell ที่เรียกใช้ Whisper
ฉันยังไม่พบวิธี import
เป็นโมดูล node.js
ตัวอย่างทั้งหมดที่มี import
ดูเหมือนจะใช้เซิร์ฟเวอร์ python
import { exec } from 'child_process'
exec ( `whisper './ ${ filename } ' --model tiny --language Japanese --task translate` , ( err , stdout , stderr ) => {
if ( err ) {
console . log ( err )
} else {
console . log ( stdout )
console . log ( stderr )
}
} )
สังเกตว่าฉันเพิ่งใช้โมเดล tiny
เพื่อทำงานการถอดเสียงที่รวดเร็วเป็นพิเศษ นี่คือระบบทั้งหมดของฉันสามารถจัดการได้มิฉะนั้นมันจะหยุดนิ่ง
ฉันเปลี่ยนพฤติกรรมของแอพจากเวอร์ชันก่อนหน้า ก่อนหน้านี้แอปจะบันทึกข้อมูลเสียงอย่างต่อเนื่องในช่วงเวลาหนึ่งโดยค่าเริ่มต้น 5s ตอนนี้มันจะเริ่มบันทึกหากมันสามารถตรวจจับเสียงได้
มีการตั้งค่าเกณฑ์เพื่อกำจัดเสียงรบกวนจากพื้นหลังจากการกระตุ้นการจับเสียง โดยค่าเริ่มต้นจะถูกตั้งค่าเป็น -45dB
(0DB เป็นเสียงที่ดังที่สุด) ปรับ minDecibels
ตัวแปรใน Settings
หากคุณต้องการตั้งค่าให้ต่ำลงหรือสูงกว่าขึ้นอยู่กับความต้องการของคุณ
ในการสนทนาของมนุษย์ปกติมีการกล่าวกันว่าเรามักจะหยุดชั่วคราวโดยเฉลี่ยประมาณ 2 วินาทีระหว่างแต่ละประโยค โปรดจำไว้ว่าหากไม่ตรวจพบเสียงนานกว่า 2 วินาทีการบันทึกจะหยุดลงและข้อมูลเสียงจะถูกส่งไปยังแบ็กเอนด์สำหรับการถอดความ คุณสามารถเปลี่ยนสิ่งนี้ได้โดยการแก้ไขค่าของ maxPause
โดยเริ่มต้นเป็นค่าเริ่มต้นเป็น 2500ms
เป็นไปได้ที่จะเล่นเสียงที่อัปโหลดและติดตามเอาต์พุตข้อความตั้งแต่ช่วงเวลาแสดง
สำหรับรหัสตัวเองฉันใช้ class component
(ฉันรู้ฉันรู้ ... ) เพราะฉันมีเวลายากในการเข้าถึง state variables
โดยใช้ตะขอเมื่อฉันกำลังพัฒนา
นอกเหนือจาก minDecibels
และ maxPause
แล้วคุณยังสามารถเปลี่ยนตัวเลือก Whisper
หลายตัวเช่น language
model
และ task
จากกล่องโต้ตอบ Settings
โปรดตรวจสอบที่เก็บ GitHub ของ Whisper สำหรับคำอธิบายเกี่ยวกับตัวเลือก
ยังมีหลายสิ่งที่ต้องทำดังนั้นโครงการนี้ยังคงเป็นงานที่กำลังดำเนินอยู่ ...
ก่อนอื่นคุณต้องติดตั้ง Whisper
และ Python
Dependencies
$ pip install git+https://github.com/openai/whisper.git
คุณต้องติดตั้ง ffmpeg
ในระบบของคุณ
# macos
$ brew install ffmpeg
# windows using chocolatey
$ choco install ffmpeg
# windows using scoop
$ scoop install ffmpeg
มาถึงตอนนี้คุณสามารถทดสอบ Whisper
โดยใช้บรรทัดคำสั่ง
$ whisper myaudiofile.ogg --language Japanese --task translate
หากประสบความสำเร็จคุณสามารถติดตั้งแอพนี้ต่อไปได้
โคลนที่เก็บและติดตั้งการพึ่งพา
$ git clone https://github.com/supershaneski/openai-whisper.git myproject
$ cd myproject
$ npm install
$ npm run dev
เปิดเบราว์เซอร์ของคุณเป็น http://localhost:3006/
เพื่อโหลดหน้าแอปพลิเคชัน
คุณอาจต้องการเรียกใช้แอพนี้โดยใช้โปรโตคอล https
สิ่งนี้จำเป็นหากคุณต้องการใช้อุปกรณ์แยกต่างหากสำหรับการจับเสียงและใช้เครื่องของคุณเป็นเซิร์ฟเวอร์
ในการทำเช่นนั้นให้เตรียม certificate
ที่เหมาะสมและไฟล์ key
และแก้ไข server.js
ที่ไดเรกทอรีรูท
จากนั้นวิ่ง
$ node server.js
ตอนนี้เปิดเบราว์เซอร์ของคุณเป็น https://localhost:3006/
เพื่อโหลดหน้าเว็บ