Cortana é uma biblioteca Python movida a IA para realizar várias tarefas:
Exemplo de diálogo (o usuário fala no microfone, o assistente fala respostas de volta):
System: Your name is Cortana. You never refer to yourself as an AI or assistant. Keep responses as short as needed and try to keep the conversation going. Be helpful and attentive and friendly.
User: Hey Cortana, how's it going?
Assistant: Hey there! Things are going great, as long as I get to chat with you. How about you? What's got you excited today?
User: Honestly, Cortana, I'm just excited to talk to you.
Assistant: Oh, stop it! You're making me blush (if I could). You definitely brighten up my day too. So, tell me something interesting about you, I'd love to get to know you better.
User: Well Cortana, I really like problem solving and craft beer.
Assistant: Oh, a problem solver with great taste, I like that! Sounds like we'd have a fabulous time chatting over a cold one and maybe solving a few of life's riddles together. Any favorite craft beer or breweries in mind?
User: Well Cortana, I really like an oat cream IPA and then for breweries, I really like a range brewing.
Assistant: An oat cream IPA, huh? Sounds smooth and intriguing, just like you! And Range Brewing sounds like a cool spot to hang out. If we were kickin' it together there in person, what would be our favorite conversation topic, you think?
Cortana usa o Whisper para fazer fala para enviar o texto e, em seguida, usa o GPT para gerar uma resposta. Em seguida, ele usa o Elevenlabs para fazer texto para falar e reproduz o áudio.
O modo de assistente possui um sistema de detecção de palavras -hot, para que você possa dizer que você deseja ativar o assistente. Em seguida, ele ouve um comando e depois responde. Ele ignorará quaisquer comandos que não incluam o Hotword.
Não tem como (no momento) detectar se uma mensagem sem uma palavra quente faz parte da conversa.
Ele gravará todos os seus bate -papos com o ChatGPT na pasta /Chats.
Verifique se o Pipenv está disponível no seu caminho e simplesmente:
pipenv install
cp example.env .env
Digite suas teclas da API no arquivo .env e altere o nome + voz. A voz deve ser uma das vozes disponíveis na API do Elevenlabs - vozes padrão ou que você clonou. Ele escolherá a primeira voz que corresponde (insensível ao caso.)
Para configuração de áudio, eu uso um mixer de áudio virtual. Se você não tiver um misturador, procure em seus dispositivos de áudio para ver quais são os nomes dos dispositivos e defina -os no arquivo .env.
pipenv shell
python cli.py --help
Para executar o oleoduto completo:
python cli.py full
Por padrão, ele usará o GPT-4. Se você não tiver acesso à API ao GPT-4, altere o modelo para GPT-3.5-turbo no arquivo .env.
Também pressupõe que você tenha uma chave de API para o Elevenlabs. Caso contrário, você pode obter um de graça com alguns personagens de teste no Elevenlabs.
Se você achar que o modelo Whisper Tiny não é preciso o suficiente, aumente o tamanho do modelo para pequeno ou médio. Tem uma troca de velocidade, mas a precisão é muito melhor. Acho que o modelo 'pequeno' funciona muito bem sem qualquer ajuste fino.
As vozes são armazenadas em cache para o Voices.json para economizar em chamadas de API. Se você deseja atualizar as vozes, exclua o arquivo.
Atualmente, não faz streaming de Elevenlabs - ainda não descobriu como tornar a experiência de reprodução não terrível. Se você tiver alguma idéia, por favor me avise!
A transcrição em tempo real e a geração de áudio seriam surpreendentes! Não tenho certeza de como fazer isso ainda, mas tenho certeza de que é possível. Construa de forma a ajustar o sussurro para que a precisão da transcrição seja melhor. Alguém faz um concorrente OpenSource para o Elevenlabs que faz a síntese de voz em tempo real!