Tensorflowasr
Tensorflow 2의 순응 버전을 기반으로 한 엔드 투 엔드 음성 인식 모델과 CPU의 RTF (실시간 속도)는 약 0.1입니다.
현재 지점은 V2 버전이며 CTC+번역 구조입니다.
사용 및 피드백 버그에 오신 것을 환영합니다
이전 버전의 V1 버전을 참조하십시오
Aishell-1 교육 결과 :
오프라인 결과
| 이름 | 매개 변수 수량 | 중국 세기 | 훈련 라운드 수 | 온라인/오프라인 | 테스트 데이터 | 디코딩 방법 |
|---|---|---|---|---|---|---|
| wenet (적합성) | 9.5m | 6.48% | 100 | 오프라인 오프라인 | Aishell1- 테스트 | ctc_greeedy |
| Wenet (변압기) | 9.7m | 8.68% | 100 | 오프라인 오프라인 | Aishell1- 테스트 | ctc_greeedy |
| Wenet (Paraformer) | 9.0m | 6.99% | 100 | 오프라인 오프라인 | Aishell1- 테스트 | paraformer_greeedy |
| Funasr (Paraformer) | 9.5m | 6.37% | 100 | 오프라인 오프라인 | Aishell1- 테스트 | paraformer_greeedy |
| funasr (준수) | 9.5m | 6.64% | 100 | 오프라인 오프라인 | Aishell1- 테스트 | ctc_greeedy |
| funasr (e_branchformer) | 10.1m | 6.65% | 100 | 오프라인 오프라인 | Aishell1- 테스트 | ctc_greeedy |
| Repo (conformerctc) | 10.1m | 6.8% | 100 | 오프라인 오프라인 | Aishell1- 테스트 | ctc_greeedy |
스트리밍 결과
| 이름 | 매개 변수 수량 | 중국 세기 | 훈련 라운드 수 | 온라인/오프라인 | 테스트 데이터 | 디코딩 방법 |
|---|---|---|---|---|---|---|
| wenet (u2 ++ 컨 포머) | 10.6m | 8.18% | 100 | 온라인 | Aishell1- 테스트 | ctc_greeedy |
| Wenet (U2 ++ 변압기) | 10.3m | 9.88% | 100 | 온라인 | Aishell1- 테스트 | ctc_greeedy |
| Repo (StreamingConformerCTC) | 10.1m | 7.2% | 100 | 온라인 | Aishell1- 테스트 | ctc_greeedy |
| Repo (ChunkConformer) | 10.7m | 8.9% | 100 | 온라인 | Aishell1- 테스트 | ctc_greeedy |
TTS : https://github.com/z-yq/tensorflowtts
NLU : -
봇 : -
데이터가 없으면 특정 수준의 ASR 효과를 달성 할 수 있습니다.
ASR에 대한 TTS : 교육 데이터는 Aishell1 및 Aishell3이며 데이터 유형은 ASR에 더 적합합니다.
팁 :
총 500 개의 사운드가 있습니다
중국어로만 지원됩니다
합성 할 텍스트에 문장 부호가있는 경우 수동으로 제거하십시오.
일시 정지를 추가하려면 텍스트 중간에 SIL을 추가하십시오.
1 단계 : Text.List, EGS : NOMED.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 디렉토리 및 Utterance.txt가 -O에서 생성됩니다.
Librosa 라이브러리를 참조하면, 음성 스펙트럼 기능 추출 층은 TF2를 사용하여 구현됩니다.
또는 더 적은 양의 매개 변수로 잎을 사용할 수 있습니다.
사용:
mel_layer_type: Melspectrogram #Spectrogram/leaf
trainable_kernel: True #support train model,not recommend
ONNX를 기반으로 한 CPP 프로젝트가 업데이트되었습니다.
자세한 내용은 CPPinference Onx를 참조하십시오
ONNX를 기반으로 한 Python 추론 체계, 자세한 내용은 Python 추론을 참조하십시오.
이제 스트리밍 준수 구조를 지원합니다.
현재 구현하는 두 가지 방법이 있습니다.
블록 컨 포머 + 글로벌 CTC
청크 컨 포머 + CTC 피커
모든 결과는 AISHELL TEST 데이터 세트에서 테스트되었습니다.
RTF (실시간 속도)는 CPU 단일 코어 디코딩 작업에서 테스트됩니다.
오전:
| 모델 이름 | 멜 레이어 (사용/기차) | 링크 | 암호 | 기차 데이터 | 음소 CER (%) | 매개 변수 크기 | RTF |
|---|---|---|---|---|---|---|---|
| conformerctc (들) | 참/거짓 | pan.baidu.com/s/1k6miy1ynglrt0cb-xsqqag | 8S53 | Aishell-1 (50 에코) | 6.4 | 10m | 0.056 |
| StreamingConformerCTC | 참/거짓 | pan.baidu.com/s/1rc0x7loiexaac0gnhurkhw | ZWH9 | Aishell-1 (50 에코) | 7.2 | 15m | 0.08 |
| ChunkConformer | 참/거짓 | pan.baidu.com/s/1o_x677wuywnld-8snbydxg | UJMG | Aishell-1 (50 에코) | 11.4 | 15m | 0.1 |
Vad :
| 모델 이름 | 링크 | 암호 | 기차 데이터 | 매개 변수 크기 | RTF |
|---|---|---|---|---|---|
| 8k_online_vad | pan.baidu.com/s/1ag9vwtxiqw4c2agf-6nigg | ofc9 | OpenSLR 오픈 소스 데이터 | 80k | 0.0001 |
Punc :
| 모델 이름 | 링크 | 암호 | 기차 데이터 | acc | 매개 변수 크기 | RTF |
|---|---|---|---|---|---|---|
| PuncModel | pan.baidu.com/s/1gtvrkyie2cabfiqbn9bhaw | 515T | NLP 오픈 소스 데이터 | 95% | 600K | 0.0001 |
사용:
test_asr.py의 Onnx 파일로 모델을 변환하여 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'는 탭하는 곳에서 프로그램을 사용하여 텍스트 파일에 쓰는 것이 좋습니다.
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)을 수정하여 일부 교육 옵션을 설정하고 모델 YAML (예 : ./asr/configs/conformer.yml)에서 name 매개 변수를 수정하여 모델 구조를 선택하십시오.
그런 다음 명령을 실행합니다.
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에 따라 라이센스가 부여됩니다.
이 프로젝트를 학술 연구, 상업용 제품 생산을 위해 사용해 주셔서 감사합니다.
그러나이 프로젝트를 상품으로 거래하는 것은 금지되어 있습니다.