init: scripts diversos (crawlers, conversores, scrapers)
This commit is contained in:
111
tts-generator/elevenlabs_tts.py
Executable file
111
tts-generator/elevenlabs_tts.py
Executable file
@@ -0,0 +1,111 @@
|
||||
"""
|
||||
elevenlabs_tts.py
|
||||
|
||||
Author: Descomplicar® Crescimento Digital
|
||||
Link: https://descomplicar.pt
|
||||
Copyright: 2025 Descomplicar®
|
||||
"""
|
||||
|
||||
# ElevenLabs TTS Generator for Descomplicar (PT-PT)
|
||||
# pip install elevenlabs
|
||||
|
||||
import os
|
||||
from elevenlabs import ElevenLabs, VoiceSettings
|
||||
from pathlib import Path
|
||||
|
||||
def generate_audio_elevenlabs():
|
||||
"""
|
||||
Gera áudio usando ElevenLabs com voz PT-PT
|
||||
"""
|
||||
# Configurar cliente ElevenLabs
|
||||
client = ElevenLabs(
|
||||
api_key=os.environ.get("ELEVENLABS_API_KEY")
|
||||
)
|
||||
|
||||
# Texto do artigo de Marketing Digital da Descomplicar
|
||||
texto_marketing = """Bem-vindo à Descomplicar, a agência de aceleração digital que transforma a sua presença online numa máquina de crescimento.
|
||||
|
||||
Somos especialistas em Marketing Digital, criação de websites profissionais e estratégias que geram resultados reais para o seu negócio.
|
||||
|
||||
Na Descomplicar, a nossa filosofia é simples: tornar o complexo mais simples. Descomplicamos o marketing digital para que você se possa focar no que faz melhor - gerir o seu negócio.
|
||||
|
||||
No século 21, o mercado já não é um lugar físico; é um ecossistema digital em constante evolução. Os seus clientes não estão apenas a passar à porta da sua loja; estão a pesquisar no Google, a pedir recomendações no Facebook, a descobrir marcas no Instagram e a procurar especialistas no LinkedIn."""
|
||||
|
||||
print("🎙️ Iniciando geração de áudio com ElevenLabs (PT-PT)...")
|
||||
print(f"📝 Texto tem {len(texto_marketing)} caracteres")
|
||||
|
||||
try:
|
||||
# Usar voz feminina em português europeu
|
||||
audio = client.generate(
|
||||
text=texto_marketing,
|
||||
voice="Alice", # Voz feminina natural
|
||||
voice_settings=VoiceSettings(
|
||||
stability=0.5,
|
||||
similarity_boost=0.8,
|
||||
style=0.2,
|
||||
use_speaker_boost=True
|
||||
),
|
||||
model="eleven_multilingual_v2"
|
||||
)
|
||||
|
||||
# Salvar o áudio
|
||||
speech_file_path = Path("descomplicar_pt_pt.mp3")
|
||||
with open(speech_file_path, "wb") as f:
|
||||
for chunk in audio:
|
||||
f.write(chunk)
|
||||
|
||||
print(f"✅ Áudio PT-PT gerado: {speech_file_path}")
|
||||
print(f"📁 Ficheiro salvo em: {speech_file_path.absolute()}")
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Erro ao gerar áudio: {e}")
|
||||
print("💡 Sugestão: Verifique se tem ELEVENLABS_API_KEY configurada")
|
||||
return False
|
||||
|
||||
def list_voices():
|
||||
"""
|
||||
Lista vozes disponíveis do ElevenLabs
|
||||
"""
|
||||
try:
|
||||
client = ElevenLabs(
|
||||
api_key=os.environ.get("ELEVENLABS_API_KEY")
|
||||
)
|
||||
|
||||
voices = client.voices.get_all()
|
||||
|
||||
print("🎤 Vozes disponíveis no ElevenLabs:")
|
||||
print("=" * 50)
|
||||
|
||||
for voice in voices.voices:
|
||||
print(f"Nome: {voice.name}")
|
||||
print(f"ID: {voice.voice_id}")
|
||||
print(f"Categoria: {voice.category}")
|
||||
if hasattr(voice, 'accent'):
|
||||
print(f"Sotaque: {voice.accent}")
|
||||
print("-" * 30)
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Erro ao listar vozes: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Verificar se API key está configurada
|
||||
if not os.environ.get("ELEVENLABS_API_KEY"):
|
||||
print("❌ ELEVENLABS_API_KEY não configurada!")
|
||||
print("🔗 Obtenha uma chave gratuita em: https://elevenlabs.io/")
|
||||
print("⚙️ Configure com: export ELEVENLABS_API_KEY='sua_chave'")
|
||||
exit(1)
|
||||
|
||||
print("🇵🇹 Gerador de Voz ElevenLabs PT-PT - Descomplicar")
|
||||
print("=" * 55)
|
||||
|
||||
# Escolher ação
|
||||
escolha = input("Escolha: (g)erar áudio, (l)istar vozes? [g/l]: ").lower()
|
||||
|
||||
if escolha == 'l':
|
||||
list_voices()
|
||||
else:
|
||||
generate_audio_elevenlabs()
|
||||
|
||||
print("\n🎵 Use vozes portuguesas autênticas!")
|
||||
Reference in New Issue
Block a user