Tensorflowasr
โมเดลการรู้จำเสียงพูดแบบ end-to-end ซึ่งขึ้นอยู่กับรุ่น conformer ของ TensorFlow 2 และ RTF ของ CPU (อัตราเรียลไทม์) อยู่ที่ประมาณ 0.1
สาขาปัจจุบันคือเวอร์ชัน V2 ซึ่งเป็นโครงสร้างการแปล CTC+
ยินดีต้อนรับสู่การใช้และข้อเสนอแนะข้อบกพร่อง
โปรดดูเวอร์ชัน v1 เวอร์ชันเก่า
ผลการฝึกอบรม AISHELL-1:
ผลลัพธ์ออฟไลน์
| ชื่อ | ปริมาณพารามิเตอร์ | CER จีน | จำนวนรอบการฝึกอบรม | ออนไลน์/ออฟไลน์ | ทดสอบข้อมูล | วิธีการถอดรหัส |
|---|---|---|---|---|---|---|
| Wenet (conformer) | 9.5m | 6.48% | 100 | ออฟไลน์ออฟไลน์ | Aishell1-test | ctc_greeedy |
| Wenet (หม้อแปลง) | 9.7m | 8.68% | 100 | ออฟไลน์ออฟไลน์ | Aishell1-test | ctc_greeedy |
| Wenet (Paraformer) | 9.0m | 6.99% | 100 | ออฟไลน์ออฟไลน์ | Aishell1-test | Paraformer_greeedy |
| funasr (paraformer) | 9.5m | 6.37% | 100 | ออฟไลน์ออฟไลน์ | Aishell1-test | Paraformer_greeedy |
| funasr (conformer) | 9.5m | 6.64% | 100 | ออฟไลน์ออฟไลน์ | Aishell1-test | ctc_greeedy |
| funasr (e_branchformer) | 10.1m | 6.65% | 100 | ออฟไลน์ออฟไลน์ | Aishell1-test | ctc_greeedy |
| repo (conformerctc) | 10.1m | 6.8% | 100 | ออฟไลน์ออฟไลน์ | Aishell1-test | ctc_greeedy |
ผลลัพธ์การสตรีม
| ชื่อ | ปริมาณพารามิเตอร์ | CER จีน | จำนวนรอบการฝึกอบรม | ออนไลน์/ออฟไลน์ | ทดสอบข้อมูล | วิธีการถอดรหัส |
|---|---|---|---|---|---|---|
| Wenet (U2 ++ Conformer) | 10.6m | 8.18% | 100 | ออนไลน์ | Aishell1-test | ctc_greeedy |
| Wenet (หม้อแปลง U2 ++) | 10.3m | 9.88% | 100 | ออนไลน์ | Aishell1-test | ctc_greeedy |
| repo (streamingconformerctc) | 10.1m | 7.2% | 100 | ออนไลน์ | Aishell1-test | ctc_greeedy |
| repo (chunkconformer) | 10.7m | 8.9% | 100 | ออนไลน์ | Aishell1-test | ctc_greeedy |
TTS: https://github.com/z-yq/tensorflowtts
NLU: -
บอท: -
หากไม่มีข้อมูลคุณสามารถบรรลุเอฟเฟกต์ ASR ในระดับหนึ่ง
TTS สำหรับ ASR: ข้อมูลการฝึกอบรมคือ AISHELL1 และ AISHELL3 และชนิดข้อมูลเหมาะสำหรับ ASR
เคล็ดลับ:
มีทั้งหมด 500 เสียง
สนับสนุนในภาษาจีนเท่านั้น
หากข้อความที่จะสังเคราะห์มีเครื่องหมายวรรคตอนโปรดลบออกด้วยตนเอง
หากคุณต้องการเพิ่มการหยุดชั่วคราวให้เพิ่ม SIL ที่อยู่ตรงกลางของข้อความ
ขั้นตอนที่ 1: เตรียมรายการข้อความที่จะสังเคราะห์ถ้าชื่อ text.list, egs:
这是第一句话
这是第二句话
这是一句sil有停顿的话
...
ขั้นตอนที่ 2: ดาวน์โหลดรุ่น
ลิงค์: https://pan.baidu.com/s/1den1pmj4olkrkw8ceqruna รหัสการแยก: c0tp
ทั้งสองจำเป็นต้องดาวน์โหลดและใส่ลงในไดเรกทอรี/augmentations/tts_for_asr/models
ขั้นตอนที่ 3: จากนั้นเรียกใช้สคริปต์ในไดเรกทอรีรูท:
python . / augmentations / tts_for_asr / tts_augment . py - f text . list - o save_dir - - voice_num 10 - - vc_num 3ใน:
-f เป็นรายการที่จัดทำโดยขั้นตอนที่ 1
-o เส้นทางคลังข้อมูลที่ใช้เพื่อบันทึกการสังเคราะห์เส้นทางสัมบูรณ์ที่แนะนำ
-voice_num มีกี่โทนที่ใช้ในการสังเคราะห์แต่ละประโยค
-VC_NUM สามารถปรับปรุงได้กี่ครั้งด้วยการแปลงเสียงต่อประโยค
หลังจากดำเนินการเสร็จสิ้นไดเรกทอรี WAVS และ SOUTTANCE.txt จะถูกสร้างขึ้นภายใต้ -O
อ้างอิงจากไลบรารีไลบรทเลเยอร์ของการแยกคุณสมบัติสเปกตรัมคำพูดถูกนำมาใช้โดยใช้ TF2
หรือคุณสามารถใช้ใบไม้ที่มีพารามิเตอร์จำนวนน้อย
ใช้:
mel_layer_type: Melspectrogram #Spectrogram/leaf
trainable_kernel: True #support train model,not recommend
โครงการ CPP ที่ใช้ ONNX ได้รับการอัปเดตแล้ว
ดูรายละเอียด cppinference onnx
รูปแบบการอนุมานของ Python ตาม ONNX ดูการอนุมาน Python สำหรับรายละเอียด
ตอนนี้รองรับโครงสร้างการสตรีมมิ่ง
ขณะนี้มีสองวิธีในการใช้งาน:
บล็อก Conformer + Global CTC
Chunk Conformer + CTC Picker
ผลลัพธ์ทั้งหมดได้รับการทดสอบในชุด AISHELL TEST
RTF (อัตราเรียลไทม์) ได้รับการทดสอบในงานการถอดรหัสแบบ CPU เดียว
เช้า:
| ชื่อนางแบบ | Mel Layer (ใช้/รถไฟ) | การเชื่อมโยง | รหัส | ฝึกอบรมข้อมูล | Phoneme cer (%) | ขนาดพารามิเตอร์ | RTF |
|---|---|---|---|---|---|---|---|
| conformerctc (s) | จริง/เท็จ | pan.baidu.com/s/1k6miy1ynglrt0cb-xsqqag | 8S53 | Aishell-1 (50 Epochs) | 6.4 | 10m | 0.056 |
| StreamingConforctc | จริง/เท็จ | pan.baidu.com/S/1RC0X7LOIEXAAC0GNHURKHW | ZWH9 | Aishell-1 (50 Epochs) | 7.2 | 15m | 0.08 |
| chunkconformer | จริง/เท็จ | pan.baidu.com/s/1o_x677wuywnld-8snbydxg | ujmg | Aishell-1 (50 Epochs) | 11.4 | 15m | 0.1 |
vad:
| ชื่อนางแบบ | การเชื่อมโยง | รหัส | ฝึกอบรมข้อมูล | ขนาดพารามิเตอร์ | RTF |
|---|---|---|---|---|---|
| 8k_online_vad | pan.baidu.com/S/1AG9VWTXIQW4C2AGF-6NIGG | OFC9 | OpenSLR Open Source Data | 80k | 0.0001 |
PUNC:
| ชื่อนางแบบ | การเชื่อมโยง | รหัส | ฝึกอบรมข้อมูล | ACC | ขนาดพารามิเตอร์ | RTF |
|---|---|---|---|---|---|---|
| puncmodel | pan.baidu.com/s/1gtvrkyie2cabfiqbn9bhaw | 515T | ข้อมูลโอเพ่นซอร์ส NLP | 95% | 600k | 0.0001 |
ใช้:
แปลงโมเดลเป็นไฟล์ onnx ใน test_asr.py และใส่ลงใน pythoninference
ยินดีต้อนรับสู่การเข้าร่วมหารือและแบ่งปันปัญหา หากคุณมีมากกว่า 200 คนในกลุ่มโปรดเพิ่มโน้ต "Tensorflowasr"

อัปเดตล่าสุด
pip install tensorflow-gpu 可以参考https://www.bilibili.com/read/cv14876435if you need use the default phonemeFor LAS structure,pip install tensorflow-addonspip install rir-generatorpip install onnxruntime or pip install onnxruntime-gpu เตรียม train_list และ test_list
รูปแบบ asr_train_list โดยที่ ' t' แตะขอแนะนำให้เขียนลงในไฟล์ข้อความโดยใช้โปรแกรมพา ธ + ' t' + ข้อความ
wav_path = "xxx/xx/xx/xxx.wav"
wav_label = "这是个例子"
with open ( 'train.list' , 'w' , encoding = 'utf-8' ) as f :
f . write ( wav_path + ' t ' + wav_label + ' n ' ) :ตัวอย่างเช่นรายการรถไฟที่ได้รับ:
/opt/data/test.wav 这个是一个例子
......
ต่อไปนี้เป็นรูปแบบการเตรียมข้อมูลการฝึกอบรม (ไม่จำเป็น) สำหรับการกู้คืน VAD และเครื่องหมายวรรคตอน:
รูปแบบ vad_train_list :
wav_path1
wav_path2
……
ตัวอย่างเช่น:
/opt/data/test.wav
ตรรกะการประมวลผลภายในของการฝึกอบรม VAD ขึ้นอยู่กับพลังงานเป็นตัวอย่างการฝึกอบรมดังนั้นตรวจสอบให้แน่ใจว่าคลังการฝึกอบรมที่คุณเตรียมไว้นั้นถูกบันทึกไว้ในสภาพที่เงียบสงบ
รูปแบบ punc_train_list :
text1
text2
……
ในรูปแบบเดียวกับ LM ข้อความในแต่ละบรรทัดมีเครื่องหมายวรรคตอน
ตัวอย่างเช่น:
这是:一个例子哦。 √(正确格式)
这是:“一个例子哦”。 ×(错误格式)
这是:一个例子哦“。 ×(错误格式)
ดาวน์โหลดโมเดลที่ได้รับการฝึกฝนมาก่อนของ Bert สำหรับการฝึกอบรมแบบใช้เครื่องหมายวรรคตอน
https://pan.baidu.com/s/1_HDAhfGZfNhXS-cYoLQucA extraction code: 4hsa
แก้ไขไฟล์การกำหนดค่า am_data.yml (./asr/configs) เพื่อตั้งค่าตัวเลือกการฝึกอบรมบางอย่างและแก้ไขพารามิเตอร์ name ใน รุ่น YAML (เช่น: ./asr/configs/Conformer.yml) เพื่อเลือกโครงสร้างโมเดล
จากนั้นเรียกใช้คำสั่ง:
python train_asr.py --data_config ./asr/configs/am_data.yml --model_config ./asr/configs/ConformerS.yml เมื่อคุณต้องการทดสอบคุณสามารถอ้างถึงการสาธิตที่เขียนใน ./test_asr.py แน่นอนคุณสามารถปรับเปลี่ยนวิธีการ stt เพื่อปรับให้เข้ากับความต้องการของคุณ:
python . / test_asr . py นอกจากนี้คุณยังสามารถใช้ เครื่องทดสอบ เพื่อทดสอบข้อมูลในปริมาณมากเพื่อตรวจสอบประสิทธิภาพของโมเดลของคุณ:
ดำเนินการ:
python eval_am.py --data_config ./asr/configs/am_data.yml --model_config ./asr/configs/ConformerS.ymlสคริปต์นี้จะแสดงตัวบ่งชี้หลายตัวของ ser/cer/del/ins/sub
6. ในการฝึกอบรม VAD หรือรูปแบบการกู้คืนเครื่องหมายวรรคตอนโปรดดูขั้นตอนข้างต้น
หากคุณต้องการใช้หน่วยเสียงของคุณเองคุณต้องใช้วิธีการแปลงที่สอดคล้องกันใน am_dataloader.py
def init_text_to_vocab ( self ): #keep the name
def text_to_vocab_func ( txt ):
return your_convert_function
self . text_to_vocab = text_to_vocab_func #here self.text_to_vocab is a function,not a call อย่าลืมเริ่มต้นด้วย <S> และ </S> เช่น:
<S>
</S>
de
shì
……
อ้างถึงโครงการที่ยอดเยี่ยมต่อไปนี้:
https://github.com/usimarit/tiramisuasr
https://github.com/noahchalifour/warp-transducer
https://github.com/paddlepaddle/deepspeech
https://github.com/baidu-research/warp-ctc
เราอนุญาตและขอขอบคุณสำหรับการใช้โครงการนี้สำหรับการวิจัยเชิงวิชาการการผลิตผลิตภัณฑ์เชิงพาณิชย์ ฯลฯ แต่ห้ามมิให้แลกเปลี่ยนโครงการนี้เป็นสินค้า
โดยรวมแล้วรุ่นเกือบจะได้รับใบอนุญาตภายใต้ Apache 2.0 สำหรับทุกประเทศในโลก
อนุญาตและขอบคุณสำหรับการใช้โครงการนี้สำหรับการวิจัยเชิงวิชาการการผลิตผลิตภัณฑ์เชิงพาณิชย์ช่วยให้การใช้งานเชิงพาณิชย์และไม่ใช่เชิงพาณิชย์ไม่ จำกัด
อย่างไรก็ตามมันเป็นสิ่งต้องห้ามที่จะแลกเปลี่ยนโครงการนี้เป็นสินค้า