
O Persa TTS é um mecanismo de sintetização e aplicativo reatnativo de sintetizador de texto para mais de fusão que desenvolvi inicialmente como meu projeto de graduação em diploma de bacharel.
No entanto, o projeto deve obter melhorias graduais ao longo do tempo.


![]()
![]()
![]()
Os aplicativos persa-TTS são alimentados pelo React Native, para que você precisará dele para compilar os aplicativos corretamente. Para compilar a versão do Android, ter um SDK Android adequado em sua máquina é obrigatório e evidentemente compilar o Variente IOS precisa que você tenha uma cópia do Xcode em funcionamento e uma ferramenta funcional de gerenciamento de dependência de cocopods em uma máquina alimentada pelo sistema operacional MacOS.
Você também precisará ter uma ferramenta de gerenciamento de dependência para acessar o NPM e baixar as dependências do projeto. O fio é usado neste projeto, mas o NPM ou outras ferramentas também podem ser usadas.
Primeiro você pode obter o código -fonte clonando -o
git clone [email protected]:amfolio/persian-tts.git cd ios
pod install Em seguida, vá para o diretório do pacote e instale suas dependências usando yarn install ou npm install
Para iniciar aplicativos em emuladores de sistemas operacionais Android e/ou iOS, você pode usar os seguintes comandos:
react-native run-androidreact-native run-iosA estrutura deste projeto é apenas idêntica a muitas outras estruturas de projeto reatnativas. Abaixo está apenas um quadro geral da estrutura principal:
Em breve, o projeto usa uma aproxima "sintetização concatnativa" para atingir seu objetivo. Na língua persa, um conjunto ilimitado de palavras pode ser construído concatnando os pares "consoante+vogal". Para uma bravidade aqui, chamamos esses pares simplesmente de "sílabas".
Para fazer o trabalho de sintetização, o projeto possui inicialmente um conjunto de 169 vozes sílabas, recodificadas da minha própria voz (para que não seja uma narração profissional?). Este número é desenvolvido como abaixo:
| Tipo de voz | Contagem de arquivos correspondente |
|---|---|
| vogais | 6 |
| consoantes silenciosas | 23 |
| sílaba (consoante+vogal) | 138 |
| espaços | 2 |
| Total | 169 |
O processo de sintetização é então viável, concatnando sílabas usando a biblioteca FFMPEG e é o wrapper React-native-FFMPEG. Aqui está um esquema rápido do que acontece.
Na primeira etapa, o fonético correspondente para a entrada persa é criado usando a função de utilidade textTophonems.
const input = "سلام" ; // means "Hello" in persian
const output = textToPhonems ( input ) ; // ["sa", "lā", "m"];O resultado da etapa 1 passa pela função PhoneMstoffmpeg utilidade e recebe um comando válido de concatnação do FFMPEG:
const ffmpeg = phonemsToFFMpeg ( output ) ;E o resultado seria:
ffmpeg
-I sa.wav -I lā.wav -I m.wav
-filter_complex ‘[0:0][1:0][2:0]concat=n=3:v=0:a=1[out]’
-map ‘[out]’ output.wavO aplicativo chama o FFMPEG usando o React-native-FFMPEG e as etapas a seguir são feitas nos bastidores:
| Antes da concatição | ||
![]() | ![]() | ![]() |
| SA.WAV | Lā.wav | M.Wav |
| Após concatição | ||
![]() | ||
| output.wav | ||
O arquivo de áudio de saída é reproduzido nas plataformas iOS e Android, graças à biblioteca reagt-native. Leitura Recursos do pacote e transferindo-os para a caixa de sandbox/SD também é possível graças ao React-native-fs
O agradecimento especial é o diretor do meu projeto, Dr. Mohammad Taheri, que me deu a confiança de abordar esse assunto e me guiou pelas melhores etapas para torná -lo possível. Sem ele, eu provavelmente nunca teria entrado em pesquisas acadêmicas.
Os próximos grandes agradecimentos são destinados à comunidade de desenvolvedores, que compartilham generosamente a tecnologia de ponta com outras pessoas. É apenas graças a esta comunidade que reinventar as rodas não é mais necessária.
Aqui está uma pequena lista de bibliotecas que me ajudaram infinitamente no meu caminho de desenvolvimento:
Este repositório é inicialmente construído como um esforço mínimo para uma solução de texto em fala em linguagem persa. Eu ficaria muito grato por qualquer contribuição de problemas de relatórios para bugs e melhorias.
A contribuição adicionando mais vozes ao projeto também é altamente bem -vinda e você também pode mencionar seu nome em Voices.json.
Sinta -se à vontade para enviar solicitações de tração em caso de sentir qualquer necessidade.