112 lines
3.8 KiB
Python
Executable File
112 lines
3.8 KiB
Python
Executable File
"""
|
|
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!")
|