Apresentando o Eleven v3 (alpha)

Experimente o v3

Conheça KUBI, o Robô Barista Conversacional

KUBI é um barista conversacional que trabalha com a Conversational AI da ElevenLabs. Veja como.

A robotic arm holding a can of Red Bull energy drink against a blue background.

KUBI é um robô barista e recepcionista conversacional no Second Space, um espaço de co-working de última geração 24/7 em Kaohsiung, Taiwan. Como a operação do espaço é totalmente automatizada, é muito importante que KUBI — como o primeiro ponto de interação com os membros — adicione um toque amigável e único. É por isso que o Second Space escolheu a Conversational AI da ElevenLabs para criar interações divertidas e memoráveis com os membros. Vamos ver KUBI em ação.

Como KUBI funciona

KUBI utiliza uma arquitetura multissensorial sofisticada para simular a interação humana. O sistema se baseia em uma arquitetura de microsserviços, onde serviços especializados operam simultaneamente e se comunicam por meio de um fluxo de eventos em tempo real. Esses serviços gerenciam várias tarefas, incluindo reconhecimento facial e de objetos usando inferência de IA em tempo real, detecção de copos e verificações de sanidade via câmeras, impressão de recibos, reconhecimento facial seguro para controle de acesso e controle preciso dos dispensadores de leite e grãos.

Estes são alguns dos serviços que estão rodando simultaneamente:

  • Ambiente Serviço de Câmera: Usa inferência de IA em tempo real (PyTorch em Python) para identificar rostos e objetos.
  • Tablet Serviço de Câmera: Muito semelhante, mas detecta copos na mesa, objetos estranhos e verifica a sanidade - como, por exemplo, se o robô KUBI está realmente segurando um copo.
  • Serviço de Impressão de Recibos: Simples e confiável com Node + Typescript. Comunica-se com uma impressora térmica RS232.
  • Serviço de Pagamento: Construído com Kotlin JVM para concorrência sólida e segurança de tipos. Lida com relatórios de recibos do governo e comunicações com um terminal de cartão de crédito, gateway de pagamentos em criptomoeda ou provedores de pagamentos online.
  • Dispensadores de Leite e Grãos: Serviços de precisão separados — Arduino. Sensíveis ao tempo, baixa latência.
  • Reconhecimento Facial: Serviço Kotlin seguro e fortemente tipado, usado para controle de acesso.
  • Serviço de Jato de Água: Limpa automaticamente os jugs de vapor de leite após o uso — Arduino.
  • E vários outros serviços, por exemplo, para API de aplicativo móvel, exibição de menu, etc.

Por que todos esses microsserviços? Fácil — nós os gerenciamos de forma independente, escalamos facilmente e usamos as melhores ferramentas para cada tarefa.

Um núcleo central orientado por eventos para unir tudo

Coordenando todos esses microsserviços está um serviço central, humoristicamente chamado de "BigBoy". É essencialmente um grande processador de eventos não bloqueante:

Veja como o BigBoy funciona:

  1. Escuta eventos recebidos de todos os serviços.
  2. Verifica cenários para gatilhos elegíveis.
  3. Seleciona o melhor cenário.
  4. Agenda ações para execução.
1
2internal object WeatherIdleScenario: SingleTaskScenario(scenario){
3
4 importance = Importance.Medium
5 compilationTimeout = Time.ThreeSeconds
6 interruptable = false
7 exeutionExpiration = = Time.TenSeconds
8
9 override fun isEligible(event: Event, environment: Environment): Maybe<Boolean> = withEnvironment(environment) {
10 just {
11 (event is IdleEvent
12 && !triggeredInLast(40.minutes)
13 && (personPresent() || hasActiveSessions)
14 && environment.weatherService.lastReportWithin(10.minutes))
15 }
16 }
17}
18
19private val scenario = ScenarioRecipe { event, env, session ->
20
21
22 invokeOneOf(
23
24 phrase {
25 sayWith {
26 "Rainy day today, isn't it? That's why I have my little umbrella! Look!".asEnglish
27 }.withAutoGift().withAutoMotion()
28 }.given { Weather.isRaining() },
29
30 phrase {
31 sayWith {
32 "Friend, it's so cold outside! So sad for you... because you're a human. I don't really mind!".asEnglish
33 }.withAutoMotion()
34
35 sayWith {
36 "Wait, that soudned a bit rude.".asEnglish
37 }.withAutoMotion()
38
39 }.given { Weather.isCold() },
40
41 )
42
43
44}
45
46

O que são cenários?

Pense em cenários como compiladores não bloqueantes para eventos de ação do robô. Um evento de ação é geralmente o evento mais a jusante, que é o último passo em uma cadeia, resultando em um efeito físico, como movimento ou fala. Por exemplo, um cenário de saudação pode acionar:

SayEvent("Hello! Welcome!", wave.gif)
MotionEvent(HelloMotion)

Geração de Eventos com LLM: Alguns eventos de ação são gerados automaticamente por um LLM, por exemplo, comAutoMotion escolheria o melhor movimento de uma lista pré-definida com base no contexto dado. Enquanto comAutoGif usa um LLM para gerar a tag mais adequada para a frase dada. A tag é usada para obter um GIF no Giphy, que será exibido no rosto de KUBI junto com a frase.

Sincronização de eventos de ação: Esses eventos então fluem por um agendador que garante que a fala, expressões faciais e movimentos permaneçam sincronizados. A sincronização garante que a fala de KUBI corresponda perfeitamente aos seus gestos.

Flexível e Extensível

O legal é que os cenários podem até ouvir eventos de ação e acionar novos eventos de ação dinamicamente. Por exemplo:

  • Se o BigBoy detectar SayEvent("Feliz Natal"), ele pode acionar automaticamente luzes festivas e efeitos especiais na sala.
  • Outro exemplo legal é - se o usuário escolher nosso aplicativo móvel para fazer um pedido, todas as interações do usuário (clicar em um produto, fazer um pagamento, etc.) são convertidas em eventos e o BigBoy também pode reagir em tempo real. Por exemplo, se o usuário passar por “Oatmilk Latte”, KUBI pode dizer “Tem certeza de que não quer esse Oatmilk Latte? É muito bom!”

O BigBoy literalmente vê e sabe tudo o que está acontecendo. Bem legal, né?

DevOps e Observabilidade

A maioria dos serviços é hospedada localmente e está encapsulada em um contêiner docker. No contêiner, seu ciclo de vida é gerenciado pelo sistema de controle de processos Supervisor. Logs de erro são coletados no Sentry e são alimentados em um aplicativo administrativo personalizado para monitorar quaisquer exceções, status em tempo real dos serviços e sensores, bem como relatórios de latência. O legal é que o aplicativo Flutter foi 90% gerado por IA.

Usando ElevenLabs para criar interações memoráveis

O Second Space tinha uma personalidade muito específica em mente para KUBI - uma mistura de Deadpool, Wheatley do jogo Portal e um pouco de Pathfinder do Apex Legends. Eles conseguiram desenhar a voz em 15 minutos, completa com emoções e pausas que tornam a voz ainda mais humana.

A ElevenLabs alimenta as capacidades de fala de KUBI por meio de duas APIs principais:

Text-To-Speech (TTS)

  • Lida com ~90% de nossas interações.
  • Usa cenários pré-desenhados para o clima perfeito.
  • Mensagens geradas por LLMs podem ser personalizadas, com áudio de alta qualidade, a melhor pronúncia, não crítico em termos de tempo.
  • Oferece fala multilíngue incrivelmente natural em inglês, chinês, espanhol, japonês e até letão (Deadpool letão, alguém?).

Modo Conversacional (Tempo Real)

Ativado quando um cliente diz, "Ei KUBI!", a Conversational AI da ElevenLabs é capaz de responder em 200ms, fazendo a interação parecer realmente humana.

  • Prioridade: Baixa latência.
  • Troca um pouco de qualidade de áudio por capacidade de resposta.
  • Usa a nova ferramenta de language_detection em tempo real da ElevenLabs, lidando dinamicamente com diferentes idiomas instantaneamente.
  • Sessão de Conversational AI iniciada sob demanda quando um membro entra na instalação ou diz “Ei, KUBI!”

Ferramentas Conversacionais Personalizadas

Usando a Conversational AI da ElevenLabs via conexão WebSocket, KUBI pode aproveitar a chamada de função, por exemplo:

  • fazer_pedido: Reconhece pedidos, envia eventos diretamente para o BigBoy.
  • fazer_pagamento: Notifica imediatamente nosso PaymentService para acionar a máquina de cartão de crédito para pagamentos.

Alternar entre diferentes modelos LLM facilmente através do painel administrativo da ElevenLabs ajuda o Second Space a otimizar o entendimento e a precisão, pois notamos que diferentes modelos reconhecem melhor as intenções da ferramenta do que outros. Atualmente, eles estão usando o Gemini 2.0 Flash como seu modelo principal para Conversational AI e o ChatGPT 4o para as gerações de fala estática.

Expandindo KUBI para mercados adicionais

Os primeiros commits do Second Space no GitHub referenciando a ElevenLabs datam de janeiro de 2023 - mesmo antes do modelo multilíngue ser lançado. Eles reconheceram a dedicação da ElevenLabs à qualidade desde cedo e construíram com confiança uma arquitetura antecipando o suporte multilíngue futuro. Agora, entrar em mercados como Japão e Coreia do Sul é tão simples quanto apertar um botão — sem necessidade de trabalho extra de desenvolvimento!

Conclusão

Microsserviços, eventos em tempo real e a poderosa tecnologia de voz da ElevenLabs fazem KUBI parecer realmente vivo e pronto para conquistar e encantar o mundo, um café e uma interação espirituosa de cada vez.

Explore artigos da equipe ElevenLabs

ElevenLabs

Crie com o áudio IA da mais alta qualidade