
O READ2ME é um aplicativo FASTAPI que busca conteúdo dos URLs fornecidos, processa o texto, converte-o em fala usando o TTS de borda do Microsoft Azure ou com os modelos TTS locais F5-TTS, Styletts2 ou Piper TTS e tags os arquivos MP3 resultantes com metadados. Você pode transformar o texto completo em áudio ou ter um LLM converter o texto de semente em um podcast. Atualmente, o Ollama e qualquer API compatível com o OpenAI são suportados. Você pode instalar a extensão de cromo fornecida em qualquer navegador baseado em cromo (por exemplo, Chrome ou Microsoft Edge) para enviar URLs atuais ou qualquer texto ao sever, adicionar fontes e palavras-chave para buscar automática.
Atualmente, é uma versão beta, mas pretendo estendê -la para suportar outros tipos de conteúdo (por exemplo, Epub) no futuro e fornecer suporte mais robusto a outros idiomas que não o inglês. Atualmente, ao usar o Azure Edge TTS padrão, ele já suporta outros idiomas e tenta automaticamente o texto, mas a qualidade pode variar dependendo do idioma.
requirements.txt para borda-tts, requisitos separados para F5 e Styletts2. Clone o repositório:
git clone https://github.com/WismutHansen/READ2ME.git
cd read2meCrie e ativar um ambiente virtual:
python -m venv .venv
source .venv/bin/activate # On Windows: .venvScriptsactivateOu se você gosta de usar o UV para gerenciamento de pacotes:
uv venv
source .venv/bin/activate # On Windows: .venvScriptsactivateInstale dependências:
pip install -r requirements.txt (or uv pip install -r requirements.txt)Para o modelo Local StyLetts2 Text-to-Speech, por favor, instale também as dependências adicionais:
pip install -r requirements_stts2.txt (or uv pip install -r requirements_stts2.txt)Para o modelo F5-TTS, instale também as dependências adicionais:
pip install -r requirements_F5.txt (or uv pip install -r requirements_F5.txt)Instale o dramaturgo
playwright installSe estiver usando UV, por favor, instale também:
uv pip install pipPara suporte local de Pipertts:
python3 -m TTS.piper_tts.instalpipertts (MacOS and Linux) or python -m TTS.piper_tts.instalpipertts (on Windows)NOTA: O FFMPEG é necessário ao usar o Styletts2 ou o PipeRts para converter arquivos WAV em MP3. Os Styletts também exigem que o Espeak-NG seja instalado no seu sistema.
Configurar variáveis de ambiente:
Renomeie .env.example arquivo no diretor raiz para .env e edite o conteúdo à sua preferência:
OUTPUT_DIR=Output # Directory to store output files
SOURCES_FILE=sources.json # File containing sources to retrieve articles from twice a day
IMG_PATH=front.jpg # Path to image file to use as cover
OLLAMA_BASE_URL=http://localhost:11434 # Standard Port for Ollama
OPENAI_BASE_URL=http://localhost:11434/v1 # Example for Ollama Open AI compatible endpoint
OPENAI_API_KEY=skxxxxxx # Your OpenAI API Key in case of using the official OpenAI API
MODEL_NAME=llama3.2:latest
LLM_ENGINE=Ollama # Valid Options: Ollama, OpenAIVocê pode usar o Ollama ou qualquer API compatível com o OpenAI para geração de scripts de título e podcast (função de resumo também em breve)
Clone o repositório e mude para ele:
git clone https://github.com/WismutHansen/READ2ME.git && cd read2meCopie o .env.exemplo para .env e edite o conteúdo: importante: Ao usar um LLM-Engine local por exemplo, o URL precisa seguir este formato "host.docker.internal: 11434" (para ollama) ou "host.docker.internal: 1234" (para lmstudio)
Construa o recipiente do docker
docker build -t read2me . Nota: o tempo de construção leva muito tempo, seja paciente
Execute o contêiner do Docker
docker run -p 7777:7777 -d read2meNota: o tempo de construção leva muito tempo, seja paciente
Copie e renomeie .env.example para .env . Edite o conteúdo deste arquivo como desejar, especificando o diretório de saída, o arquivo de tarefas e o caminho da imagem a ser usado para a capa do arquivo MP3, bem como as fontes e o arquivo de palavras -chave.
Execute o aplicativo FASTAPI:
uvicorn main:app --host 0.0.0.0 --port 7777Ou, se você estiver conectado a um servidor Linux, por exemplo, via SSH e deseja manter o aplicativo em execução após fechar sua sessão
nohup uvicorn main:app --host 0.0.0.0 --port 7777 & Isso gravará toda a saída de comando em um arquivo chamado nohup.out no seu diretório de trabalho atual.
Adicione URLs para processamento:
Envie uma solicitação de postagem para http://localhost:7777/v1/url/full com um corpo JSON contendo o URL:
{
"url" : " https://example.com/article "
} Você pode usar curl ou qualquer cliente da API como Postman para enviar esta solicitação como esta:
curl -X POST http://localhost:7777/v1/url/full/
-H " Content-Type: application/json "
-d ' {"url": "https://example.com/article"} '
-d ' {"tts-engine": "edge"} 'O repositório também contém uma extensão de cromo que você pode instalar em qualquer navegador baseado em cromo (por exemplo, Google Chrome) quando as configurações do desenvolvedor são ativadas.
URLs de processamento:
O aplicativo verifica periodicamente o arquivo tasks.json para novos trabalhos processarem. Ele busca o conteúdo de um determinado URL, extrai texto, o converte em fala e salva os arquivos MP3 resultantes com metadados apropriados.
Especifique fontes e palavras -chave para recuperação automática:
Crie um arquivo chamado sources.json em seu diretório de trabalho atual com URLs para sites que você deseja monitorar para novos artigos. Você também pode definir palavras-chave globais e palavras-chave por fonte a serem usadas como filtros para recuperação automática. Se você definir "*" para uma fonte, todos os novos artigos serão recuperados. Aqui está uma estrutura de exemplo:
{
"global_keywords" : [
" globalkeyword1 " ,
" globalkeyword2 "
],
"sources" : [
{
"url" : " https://example.com " ,
"keywords" : [ " keyword1 " , " keyword2 " ]
},
{
"url" : " https://example2.com " ,
"keywords" : [ " * " ]
}
]
}A localização de ambos os arquivos é configurável no arquivo .env.
Para usar o Frontend Next.js, verifique se você tem o Node.js instalado no seu sistema. Nota: Frontend está atualmente em um estágio experimental inicial, então espere muitos bugs: primeiro, mude para o diretório de front -end
cd frontendEm seguida, instale as dependências de nó necessárias:
npm installEntão, para iniciar a corrida do front -end:
npm run devVocê pode acessar o front -end em http: // localhost: 3000
Post/v1/url/completo
Adiciona um URL à lista de processamento.
Solicitar corpo:
{
"url" : " https://example.com/article " ,
"tts-engine" : " edge "
}Resposta:
{
"message" : " URL added to the processing list "
}Post/v1/url/podcast
Post/v1/text/completo
Post/v1/texto/podcast
Fork o repositório.
Crie uma nova filial:
git checkout -b feature/your-feature-nameFaça suas alterações e cometê -las:
git commit -m ' Add some feature 'Empurre para o ramo:
git push origin feature/your-feature-nameEnvie uma solicitação de tração.
Este projeto está licenciado no Apache License versão 2.0, janeiro de 2004, exceto o código Styletts2, licenciado sob a licença do MIT. Os modelos F5-TTS ABD Styletts2 pré-treinados estão sob sua própria licença.
Modelos pré-treinados Styletts2: Antes de usar esses modelos pré-treinados, você concorda em informar aos ouvintes que as amostras de fala são sintetizadas pelos modelos pré-treinados, a menos que você tenha permissão para usar a voz que sintetiza. Ou seja, você concorda em usar apenas vozes cujos alto -falantes concedem permissão para ter sua voz clonada, diretamente ou por licença antes de tornar públicas vozes sintetizadas, ou você deve anunciar publicamente que essas vozes são sintetizadas se você não tiver permissão para usar essas vozes.
Gostaria de agradecer aos seguintes repositórios e autores por sua inspiração e código: