Tensorflowasr
O modelo de reconhecimento de fala de ponta a ponta com base na versão confortadora do Tensorflow 2, e o RTF da CPU (taxa em tempo real) está em torno de 0,1
A filial atual é a versão V2, que é uma estrutura de tradução CTC+
Bem -vindo a usar e feedback bugs
Por favor, veja a versão V1 da versão antiga
Resultados do treinamento de Aishell-1:
Resultados offline
| Nome | Quantidade de parâmetro | Cer | Número de rodadas de treinamento | online/offline | Dados de teste | Método de decodificação |
|---|---|---|---|---|---|---|
| Wenet (conformista) | 9,5m | 6,48% | 100 | Offline offline | AISHELL1-TEST | ctc_greeedy |
| Wenet (transformador) | 9,7m | 8,68% | 100 | Offline offline | AISHELL1-TEST | ctc_greeedy |
| Wenet (paraformador) | 9,0m | 6,99% | 100 | Offline offline | AISHELL1-TEST | paraformer_greeedy |
| Fanasr (paraformador) | 9,5m | 6,37% | 100 | Offline offline | AISHELL1-TEST | paraformer_greeedy |
| Fanasr (conformista) | 9,5m | 6,64% | 100 | Offline offline | AISHELL1-TEST | ctc_greeedy |
| Fanasr (e_branchformer) | 10.1m | 6,65% | 100 | Offline offline | AISHELL1-TEST | ctc_greeedy |
| repo (conformerctc) | 10.1m | 6,8% | 100 | Offline offline | AISHELL1-TEST | ctc_greeedy |
Resultados de streaming
| Nome | Quantidade de parâmetro | Cer | Número de rodadas de treinamento | online/offline | Dados de teste | Método de decodificação |
|---|---|---|---|---|---|---|
| Wenet (u2 ++ conformer) | 10.6m | 8,18% | 100 | On-line | AISHELL1-TEST | ctc_greeedy |
| Wenet (transformador U2 ++) | 10.3m | 9,88% | 100 | On-line | AISHELL1-TEST | ctc_greeedy |
| Repo (StreamingConformerCtc) | 10.1m | 7,2% | 100 | On-line | AISHELL1-TEST | ctc_greeedy |
| Repo (ChunkConformer) | 10.7m | 8,9% | 100 | On-line | AISHELL1-TEST | ctc_greeedy |
TTS: https://github.com/z-thq/tensorflowtts
NLU: -
ROBÔ: -
Sem dados, você pode atingir um certo nível de efeito ASR.
TTS para ASR: Os dados de treinamento são Aishell1 e Aishell3, e o tipo de dados é mais adequado para ASR.
Pontas:
Existem 500 sons no total
Apenas apoiado em chinês
Se o texto a ser sintetizado tiver pontos de pontuação, remova -os manualmente
Se você quiser adicionar pausas, adicione SIL no meio do texto
Etapa 1: Prepare uma lista de texto a ser sintetizada, se nomeado text.list, por exemplo:
这是第一句话
这是第二句话
这是一句sil有停顿的话
...
Etapa2: Baixe o modelo
Link: https://pan.baidu.com/s/1den1pmj4olkrkw8ceqruna Código de extração: C0TP
Ambos precisam ser baixados e colocados no diretório./augmentations/tts_for_asr/models
Etapa 3: Em seguida, execute o script no diretório raiz:
python . / augmentations / tts_for_asr / tts_augment . py - f text . list - o save_dir - - voice_num 10 - - vc_num 3em:
-f é a lista preparada pela etapa1
-O O caminho do corpus usado para salvar o sintético, o caminho absoluto recomendado.
--voice_num quantos tons são usados para sintetizar cada frase
--vc_num quantas vezes podem ser aprimoradas com conversão de tom por frase
Após a conclusão da execução, o diretório WAVS e a utterrance.txt serão gerados em -o
Referindo -se à biblioteca de Librosa, a extração de recursos da camada de espectro de fala é implementada usando o TF2.
Ou você pode usar folhas com uma quantidade menor de parâmetro.
usar:
mel_layer_type: Melspectrogram #Spectrogram/leaf
trainable_kernel: True #support train model,not recommend
O projeto CPP baseado no ONNX foi atualizado.
Veja CPPinference OnNx para obter detalhes
Esquema de inferência de Python com base no ONNX, consulte a inferência Python para obter detalhes
Agora suporta a estrutura de streaming de conformidade.
Atualmente, existem duas maneiras de implementar:
Bloco conformista + CTC global
Chunk conformer + CTC Picker
Todos os resultados foram testados no conjunto de dados AISHELL TEST .
RTF (taxa em tempo real) é testada em tarefas de decodificação de núcleo único da CPU .
SOU:
| Nome do modelo | Camada MEL (uso/trem) | link | código | dados de treinar | Phoneme Cer (%) | Tamanho dos parâmetros | Rtf |
|---|---|---|---|---|---|---|---|
| Conformerctc (s) | Verdadeiro/falso | pan.baidu.com/s/1k6miy1ynglrt0cb-xsqqag | 8S53 | Aishell-1 (50 épocas) | 6.4 | 10m | 0,056 |
| StreamingConformerCtc | Verdadeiro/falso | pan.baidu.com/s/1rc0x7loiexaac0gnhurkhw | ZWH9 | Aishell-1 (50 épocas) | 7.2 | 15m | 0,08 |
| ChunkConformer | Verdadeiro/falso | pan.baidu.com/s/1o_x677wuywnld-8snbydxg | ujmg | Aishell-1 (50 épocas) | 11.4 | 15m | 0.1 |
Vad:
| Nome do modelo | link | código | dados de treinar | Tamanho dos parâmetros | Rtf |
|---|---|---|---|---|---|
| 8K_ONLINE_VAD | pan.baidu.com/s/1ag9vwtxiqw4c2agf-6nigg | OFC9 | Dados de código aberto openlr | 80k | 0,0001 |
Punc:
| Nome do modelo | link | código | dados de treinar | acc | Tamanho dos parâmetros | Rtf |
|---|---|---|---|---|---|---|
| Puncmodel | pan.baidu.com/s/1gtvrkyie2cabfiqbn9bhaw | 515T | Dados de código aberto do NLP | 95% | 600K | 0,0001 |
usar:
Converta o modelo em arquivo ONNX em test_asr.py e coloque -o em Pythoninference
Bem -vindo para participar, discutir e compartilhar questões. Se você tiver mais de 200 pessoas no grupo, adicione a nota "TensorFlowasr".

As atualizações mais recentes
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 Prepare Train_list e Test_list.
formato asr_train_list , onde ' t' é tap, é recomendável gravar em um arquivo de texto usando o programa, o caminho + ' t' + texto
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 ' ) :Por exemplo, o trem.list obteve:
/opt/data/test.wav 这个是一个例子
......
A seguir, o formato de preparação de dados de treinamento (não é necessário) para o VAD e a recuperação de pontuação:
formato vad_train_list :
wav_path1
wav_path2
……
Por exemplo:
/opt/data/test.wav
A lógica interna do processamento do treinamento do VAD baseia -se em energia como amostras de treinamento; portanto, verifique se o corpus de treinamento que você prepara é registrado em condições tranquilas.
PUNC_TRAIN_LIST FORMAT:
text1
text2
……
No mesmo formato que o LM, o texto em cada linha contém pontuação.
por exemplo:
这是:一个例子哦。 √(正确格式)
这是:“一个例子哦”。 ×(错误格式)
这是:一个例子哦“。 ×(错误格式)
Faça o download do modelo pré-treinado de Bert para o treinamento assistido de modelos de recuperação de pontuação.
https://pan.baidu.com/s/1_HDAhfGZfNhXS-cYoLQucA extraction code: 4hsa
Modifique o arquivo de configuração am_data.yml (./asr/configs) para definir algumas opções de treinamento e modificar name no modelo YAML (como: ./asr/configs/conformer.yml) para selecionar a estrutura do modelo.
Em seguida, execute o comando:
python train_asr.py --data_config ./asr/configs/am_data.yml --model_config ./asr/configs/ConformerS.yml Quando você deseja testar, você pode consultar a stt escrita em ./test_asr.py .
python . / test_asr . py Você também pode usar o testador para testar dados em grandes quantidades para verificar o desempenho do seu modelo:
implementar:
python eval_am.py --data_config ./asr/configs/am_data.yml --model_config ./asr/configs/ConformerS.ymlEste script mostrará vários indicadores de Ser/Cer/Del/Ins/Sub
6. Para treinar o modelo de recuperação de Vad ou pontuação, consulte as etapas acima.
Se você deseja usar seu próprio fonema, precisa do método de conversão correspondente em 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 Não se esqueça de começar com <S> e </S> , por exemplo:
<S>
</S>
de
shì
……
Consulte os seguintes projetos excelentes:
https://github.com/usimarit/tiramisuasr
https://github.com/noahchalifour/warp-transducer
https://github.com/paddlepaddle/deepSpeech
https://github.com/baidu-research/warp-ctc
Permitimos e agradecemos por usar este projeto para pesquisa acadêmica, produção de produtos comerciais etc., mas é proibido negociar esse projeto como uma mercadoria.
No geral, quase os modelos aqui estão licenciados sob o Apache 2.0 para todos os países do mundo.
Permitir e obrigado por usar este projeto para pesquisa acadêmica, produção de produtos comerciais, permitindo o uso comercial e não comercial irrestrito.
No entanto, é proibido negociar este projeto como uma mercadoria.