Tensorflowasr
Das auf der Konformer-Version von TensorFlow 2 basierende End-to-End-Spracherkennungsmodell und das RTF (Echtzeit) der CPU liegt bei 0,1
Der aktuelle Zweig ist eine V2 -Version, die eine CTC+-Scanal -Struktur ist
Willkommen bei Verwendung und Feedback -Fehler
Bitte beachten Sie die V1 -Version der alten Version
Aishell-1-Trainingsergebnisse:
Offline -Ergebnisse
| Name | Parametermenge | Chinesischer Cer | Anzahl der Trainingsrunden | online/offline | Testdaten | Decodierungsmethode |
|---|---|---|---|---|---|---|
| Wenet (Konformer) | 9,5 m | 6,48% | 100 | Offline offline | Aishell1-Test | ctc_greeedy |
| Wenet (Transformator) | 9,7 m | 8,68% | 100 | Offline offline | Aishell1-Test | ctc_greeedy |
| Wenet (Paraformer) | 9,0 m | 6,99% | 100 | Offline offline | Aishell1-Test | paraformer_greeedy |
| Funasr (Paraformer) | 9,5 m | 6,37% | 100 | Offline offline | Aishell1-Test | paraformer_greeedy |
| Funasr (Konformer) | 9,5 m | 6,64% | 100 | Offline offline | Aishell1-Test | ctc_greeedy |
| Funasr (e_branchformer) | 10.1m | 6,65% | 100 | Offline offline | Aishell1-Test | ctc_greeedy |
| Repo (Konformerctc) | 10.1m | 6,8% | 100 | Offline offline | Aishell1-Test | ctc_greeedy |
Streaming -Ergebnisse
| Name | Parametermenge | Chinesischer Cer | Anzahl der Trainingsrunden | online/offline | Testdaten | Decodierungsmethode |
|---|---|---|---|---|---|---|
| Wenet (U2 ++ - Konformer) | 10.6m | 8,18% | 100 | Online | Aishell1-Test | ctc_greeedy |
| Wenet (U2 ++ Transformator) | 10.3m | 9,88% | 100 | Online | Aishell1-Test | ctc_greeedy |
| Repo (StreamingConformerctc) | 10.1m | 7,2% | 100 | Online | Aishell1-Test | ctc_greeedy |
| Repo (ChunkConformator) | 10.7m | 8,9% | 100 | Online | Aishell1-Test | ctc_greeedy |
TTS: https://github.com/z-yq/tensorflowtts
Nlu: -
Bot: -
Ohne Daten können Sie einen bestimmten ASR -Effekt erreichen.
TTS für ASR: Die Trainingsdaten sind Aishell1 und Aishell3, und der Datentyp eignet sich besser für ASR.
Tipps:
Insgesamt gibt es 500 Sounds
Nur auf Chinesisch unterstützt
Wenn der zu synthetisierte Text Interpunktionsmarken hat, entfernen Sie sie bitte manuell
Wenn Sie Pausen hinzufügen möchten, fügen Sie SIL in die Mitte des Textes hinzu
SCHRITT1: Bereiten Sie eine Liste von Text vor, die synthetisiert werden sollen, wenn Text.List, z. B.:
这是第一句话
这是第二句话
这是一句sil有停顿的话
...
Schritt 2: Laden Sie das Modell herunter
Link: https://pan.baidu.com/s/1den1pmj4olkrkw8ceqruna Extraktionscode: C0TP
Beide müssen heruntergeladen und in das Verzeichnis eingerichtet werden./augmentations/tts_for_asr/models
SCHRITT 3: Dann führen Sie das Skript im Stammverzeichnis aus:
python . / augmentations / tts_for_asr / tts_augment . py - f text . list - o save_dir - - voice_num 10 - - vc_num 3In:
-f ist die in Schritt1 erstellte Liste
-O Der Corpus -Pfad, der zum Speichern des synthetischen, den empfohlenen absoluten Pfad verwendet wird.
-VOICE_NUM Wie viele Töne werden verwendet, um jeden Satz zu synthetisieren?
-VC_NUM Wie oft kann durch die Tonumwandlung pro Satz verbessert werden
Nach Abschluss des Lauf
In Bezug auf die Librosa -Bibliothek wird die Fear -Fear -Extraktion der Sprachspektrum mithilfe von TF2 implementiert.
Oder Sie können Blatt mit einer geringeren Menge an Parameter verwenden.
verwenden:
mel_layer_type: Melspectrogram #Spectrogram/leaf
trainable_kernel: True #support train model,not recommend
Das auf ONNX basierende CPP -Projekt wurde aktualisiert.
Weitere Informationen finden Sie unter cppinference onnx
Python -Inferenzschema basierend auf ONNX, siehe Python -Inferenz für Details
Unterstützt jetzt die Streaming -Konformerstruktur.
Derzeit gibt es zwei Möglichkeiten:
Blockkonformer + globaler CTC
Chunk -Konformer + CTC -Picker
Alle Ergebnisse wurden am AISHELL TEST getestet.
RTF (Echtzeitrate) wird an CPU- Einzelkern-Dekodierungsaufgaben getestet.
BIN:
| Modellname | MEL -Schicht (Verwendung/Zug) | Link | Code | Daten trainieren | Phonem Cer (%) | Paramesgröße | RTF |
|---|---|---|---|---|---|---|---|
| Konformerctc (s) | Wahr/falsch | pan.baidu.com/s/1k6miy1ynglrt0cb-xsqqag | 8S53 | Aishell-1 (50 Epochen) | 6.4 | 10 m | 0,056 |
| StreamingConformerctc | Wahr/falsch | pan.baidu.com/s/1rc0x7loiexaac0gnhurkhw | ZWH9 | Aishell-1 (50 Epochen) | 7.2 | 15 m | 0,08 |
| ChunkConformator | Wahr/falsch | pan.baidu.com/s/1o_x677wuywnld-8snbydxg | UJMG | Aishell-1 (50 Epochen) | 11.4 | 15 m | 0,1 |
Vad:
| Modellname | Link | Code | Daten trainieren | Paramesgröße | RTF |
|---|---|---|---|---|---|
| 8k_online_vad | pan.baidu.com/s/1ag9vwtxiqw4c2agf-6nigg | Ofc9 | OpenLR Open Source -Daten | 80k | 0,0001 |
Punc:
| Modellname | Link | Code | Daten trainieren | Acc | Paramesgröße | RTF |
|---|---|---|---|---|---|---|
| Puncmodel | pan.baidu.com/s/1gtvrkyie2cabfiqbn9bhaw | 515t | NLP Open Source -Daten | 95% | 600k | 0,0001 |
verwenden:
Konvertieren Sie das Modell in die ONNX -Datei in test_asr.py und setzen Sie es in Pythoninferenz ein
Willkommen, sich beizutreten, zu diskutieren und zu teilen. Wenn Sie mehr als 200 Personen in der Gruppe haben, fügen Sie bitte die Notiz "TensorFlowasr" hinzu.

Neueste Updates
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 Bereiten Sie Train_List und test_list vor.
ASR_TRAIN_LIST -Format, in dem ' t' tippen wird, wird empfohlen, mit dem Programm, dem Pfad + ' T' + Text in eine Textdatei zu schreiben
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 ' ) :Zum Beispiel die erhaltene Zug. List erhalten:
/opt/data/test.wav 这个是一个例子
......
Im Folgenden finden Sie das Format für Trainingsdatenvorbereitungen (nicht erforderlich) für VAD und Interpunktionswiederherstellung:
VAD_TRAIN_LIST -Format:
wav_path1
wav_path2
……
Zum Beispiel:
/opt/data/test.wav
Die interne Verarbeitungslogik des VAD -Trainings hängt von Energie als Trainingsmuster ab. Stellen Sie daher sicher, dass der von Ihnen vorbereitete Trainingskorpus unter ruhigen Bedingungen aufgezeichnet wird.
punc_train_list -Format:
text1
text2
……
Im selben Format wie LM enthält der Text in jeder Zeile die Interpunktion.
Zum Beispiel:
这是:一个例子哦。 √(正确格式)
这是:“一个例子哦”。 ×(错误格式)
这是:一个例子哦“。 ×(错误格式)
Laden Sie Berts vorgebildetes Modell für die assistierte Schulung von Interpunktionsrückgewinnungsmodellen herunter.
https://pan.baidu.com/s/1_HDAhfGZfNhXS-cYoLQucA extraction code: 4hsa
Ändern Sie die Konfigurationsdatei am_data.yml (./asr/configs), um einige Trainingsoptionen festzulegen, und ändern Sie name Parameter in Modell YAML (z. B.: ./asr/configs/conformer.yml), um die Modellstruktur auszuwählen.
Führen Sie dann den Befehl aus:
python train_asr.py --data_config ./asr/configs/am_data.yml --model_config ./asr/configs/ConformerS.yml Wenn Sie testen möchten, können Sie stt Demo in ./test_asr.py verweisen.
python . / test_asr . py Sie können auch Tester verwenden, um Daten in großen Mengen zu testen, um Ihre Modellleistung zu überprüfen:
implementieren:
python eval_am.py --data_config ./asr/configs/am_data.yml --model_config ./asr/configs/ConformerS.ymlDieses Skript zeigt mehrere Indikatoren für Ser/CER/Del/INS/Sub an
6. Um das VAD- oder Interpunktions -Wiederherstellungsmodell auszubilden, lesen Sie bitte die oben genannten Schritte.
Wenn Sie Ihr eigenes Phonem verwenden möchten, benötigen Sie die entsprechende Konvertierungsmethode in 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 Vergessen Sie nicht, mit <S> und </S> , z. B. mit:
<S>
</S>
de
shì
……
Siehe folgende hervorragende Projekte:
https://github.com/usimaarit/tiramisuasr
https://github.com/noahchalifour/warp-transducer
https://github.com/paddlepaddle/deepspeech
https://github.com/baidu-research/warp-ctc
Wir erlauben und danken Ihnen, dass Sie dieses Projekt für akademische Forschung, kommerzielle Produktproduktion usw. verwendet haben. Es ist jedoch verboten, dieses Projekt als Ware zu tauschen.
Insgesamt sind fast Modelle hier unter dem Apache 2.0 für alle Länder der Welt lizenziert.
Erlauben Sie und vielen Dank für die Verwendung dieses Projekts für die akademische Forschung, die Produktion von kommerziellen Produkten und die uneingeschränkte kommerzielle und nicht kommerzielle Verwendung gleichermaßen.
Es ist jedoch verboten, dieses Projekt als Ware zu tauschen.