O que acontece depois de parares

Da paragem da gravação ao resumo escrito: as etapas, as notas e o que pode correr mal.

Tocar em Parar termina a gravação e põe tudo o resto em marcha. O áudio é enviado para os servidores do Chui, é transcrito e é resumido. No telemóvel, a gravação já está guardada em segurança no disco antes de tudo isso: se não houver ligação, fica à espera e é enviada quando houver. Nada se perde por causa de uma rede fraca e não tens de tocar em nada.

Num Mac ou no Windows, uma gravação não se perde se o Chui tiver fechado enquanto ainda estava a parar: da próxima vez que o Chui abrir, encontra essa gravação e envia-a para a reunião que começaste, incluindo as notas (desde a build 236).

As etapas, por ordem

Uma reunião passa por elas e a aplicação mostra em que etapa está:

Uma notificação avisa quando o texto e o resumo de uma reunião estão prontos. Não inclui título nem conteúdo.

As notas são o essencial

O Chui não é um produto de transcrição. A ideia é escreveres duas linhas durante a reunião (um nome, um número, o que prometeste) e deixares o Chui juntá-las ao que foi realmente dito. O resumo é escrito a partir de ambos. As linhas escritas orientam-no, em vez de aparecerem nele palavra por palavra. As notas também podem ser escritas ou corrigidas depois da reunião.

O que uma reunião contém

list_meetings() dá a lista: identificador, título, data, duração, estado e mais nada. get_meeting() dá o resumo de uma reunião, as notas, a duração e quantos oradores foram detetados. Normalmente, é aí que convém parar. A transcrição é uma leitura à parte, muito mais cara: ver Encontrar o que foi dito.

Uma reunião que ainda não terminou

A reunião em que estás também aparece nessa lista, marcada como in_progress, para que um assistente a quem perguntem «em que estou neste momento?» possa responder. Não há transcrição nem resumo até a gravação chegar, porque o Chui transcreve uma reunião depois de ela terminar. Também não há duração final. Por isso, o que vem em vez disso é há quanto tempo está a decorrer, quando o Chui ouviu som do dispositivo pela última vez e as notas que estão a ser escritas nela, à medida que são escritas. Um assistente pode ler essas notas, acrescentar-lhes coisas e dizer que a reunião não terminou. Não deve apresentá-la como uma reunião vazia ou falhada, que é o que esses elementos em falta parecem vistos de fora.

Significa «não terminada», não «a decorrer agora», e vale a pena conhecer a diferença. O Chui sabe que uma gravação terminou quando o dispositivo lho diz, e três coisas bem diferentes parecem idênticas vistas do servidor: uma conversa que está a decorrer; uma que parou há um minuto e cujo áudio ainda está a ser enviado; e um telemóvel que se desligou a meio da reunião e nunca mais vai dizer nada. Por isso, o assistente tem instruções para não afirmar que o microfone está ligado.

O que recebe em vez disso é um único facto, bem delimitado. Enquanto uma reunião está a ser gravada, o telemóvel envia um troço de som a cada noventa segundos. Assim, o Chui sabe há quanto tempo chegou o troço mais recente dessa gravação, e não sabe mais nada além disso. Um intervalo longo significa que não chegou áudio novo: a gravação pode estar em pausa, o telemóvel pode estar sem ligação ou a reunião pode ter terminado sem que o Chui fosse avisado. Um intervalo curto também não prova que esteja em direto, porque um telemóvel a pôr em dia uma gravação mais antiga através de uma nova ligação parece igualmente recente. O Chui entrega o número em vez de apontar uma causa. Quando não conseguiu verificar de todo, não diz nada em vez de adivinhar.

O Chui dá ele próprio o título à reunião, normalmente a partir do convite do calendário ou do que foi dito, por isso o nome é muitas vezes um palpite. Podes corrigi-lo na aplicação ou dizendo-o a um assistente: rename_meeting(). As notas escritas durante a reunião também podem ser corrigidas por um assistente, mas este pergunta primeiro, porque o novo texto substitui-as todas de uma vez e as antigas não ficam guardadas em lado nenhum. prepare_update_meeting() mostra as notas como estão e como ficariam, e nesse momento ainda nada aconteceu. Só depois de dizeres que sim é que update_meeting() as escreve, e escreve exatamente o texto que te foi mostrado. Um assistente deve enviar o texto completo já com a alteração, senão o resto perde-se. Se as notas tiverem mudado entretanto (noutro dispositivo, por exemplo), nada é escrito e é preciso perguntar outra vez.

O resumo pode ser corrigido da mesma forma: um nome errado, um número errado, uma decisão registada ao contrário. prepare_update_summary() mostra o resumo como está e como ficaria, e nesse momento ainda nada aconteceu. Só depois de dizeres que sim é que update_summary() escreve exatamente o texto que te foi mostrado, substituindo-o por inteiro. A transcrição não pode ser editada, nem por um assistente nem na aplicação: é o que foi dito.

Um resumo corrigido à mão passa depois a ser um resumo como outro qualquer, e nada o protege. Dar nome a um orador, alterar as notas, juntar ou separar uma pessoa na reunião, mudar o nome de uma delas ou pedir um resumo novo leva o Chui a escrever o resumo de raiz a partir da transcrição e das notas, e a correção é substituída. Por isso, quando o erro está em quem falou ou no que dizia uma nota, corrige antes isso. O resumo atualiza-se sozinho um ou dois minutos depois.

O que dissemos da última vez

Um stand-up semanal é uma só reunião que se repete, e o Chui sabe que gravações são ocorrências dela. Sabe-o pela série do calendário a que pertencem, que fica guardada na gravação em vez de ser procurada depois. get_series() dá as ocorrências anteriores de uma reunião, da mais recente para a mais antiga. Assim, «o que combinámos na semana passada?» e «o que ficou em aberto na anterior?» são uma chamada e depois um get_meeting(), em vez de uma pesquisa por títulos que podem não se parecer uns com os outros. Uma reunião gravada sem entrada no calendário não pertence a nenhuma série, e a resposta di-lo em vez de vir vazia.

Quando só uma parte foi captada

Uma reunião pode vir marcada como interrompida (cut short) ou parcial (partial). É o Chui a dizer que a gravação não cobre a conversa toda: a aplicação foi suspensa, ou a gravação foi reconstruída depois de uma falha e o final nunca chegou ao disco. Resume o que lá está como um fragmento e não o descrevas como a reunião inteira. Uma reunião não tem essa marca quando nada correu mal, e um ficheiro importado nunca a tem, porque não há relógio da reunião com que o comparar.

get_coverage() faz essa pergunta diretamente e responde numa frase: se a gravação cobre a reunião, quanto dura o ficheiro, quanto durou a reunião e que parte dela chegou à gravação. Nada numa transcrição mostra isto: vinte minutos de uma reunião de noventa leem-se exatamente como uma reunião inteira de vinte. Por isso, vale a pena perguntar antes de dizer a alguém o que foi combinado. Também distingue «ninguém mediu isto» de «está tudo bem», que não são a mesma resposta.

Voltar a escrever o resumo

O resumo resulta dessas notas entrelaçadas com o que foi dito. Por isso, quando um ou outro muda, o Chui volta a escrevê-lo sozinho um ou dois minutos depois. Normalmente, basta dar nome a um orador ou corrigir uma nota. Na aplicação, «Voltar a escrever o resumo» (Write the summary again) mostra uma linha discreta enquanto reescreve (desde a build 248). Um assistente pode pedi-lo diretamente, e é a única coisa que pode fazer aqui que custa dinheiro a sério em cada chamada: uma passagem de um modelo de linguagem por toda a reunião e, numa reunião que nunca foi transcrita, também uma passagem de transcrição pelo áudio. Além disso, deita fora o resumo que lá está. Por isso, pergunta primeiro. prepare_resummarise_meeting() mostra o resumo que desapareceria e diz qual das duas passagens um «sim» pagaria, e nada é gasto. Só depois de dizeres que sim é que resummarise_meeting() inicia a passagem. Se o Chui já tiver voltado a escrever o resumo sozinho entretanto, di-lo e não paga nada. Uma reunião em que o Chui não ouviu palavras não pode voltar a ser resumida, e o Chui di-lo em vez de gastar dinheiro a ouvir o silêncio duas vezes.

Uma nota curta, para uma só voz (desde a build 235). Uma gravação com apenas uma voz, como um pensamento que dizes para ti próprio, pode chegar antes como uma nota curta: o próprio pensamento, arrumado, sem títulos nem nomes de oradores, e marcada com uma lâmpada nas tuas reuniões. Desde a build 236, isto aplica-se também a uma gravação longa, de horas, que antes podia ser lida como duas vozes e tratada como uma reunião.

Uma forma sua, ensinada uma vez. Se uma reunião sua tem os seus próprios títulos — a revisão semanal é sempre números, riscos, pedidos — diga-o uma vez a um assistente e o Chui passa a escrevê-la assim. A uma reunião recorrente ensina-se com set_series_shape() (a partir de qualquer reunião dela; get_series() lê-a), a uma etiqueta com summary_shape em update_label() (list_labels() mostra-a). O Chui continua a abrir com um curto «em resumo» e a fechar com os próximos passos e as questões em aberto. A forma da reunião recorrente prevalece sobre a da etiqueta; duas etiquetas com formas diferentes deixam a escolha ao Chui. Uma forma vazia devolve a escolha ao Chui. Faz parte do plano pago e pede-se por palavras — não há botão na aplicação.

Quem estava a falar

Uma transcrição chega como speaker_0, speaker_1 …: o motor distingue as vozes, mas não sabe dar-lhes nome. Dar nome a uma delas na aplicação, ou através de um assistente com name_speaker(), põe o nome no lugar da etiqueta em todo o lado onde essa reunião é lida. Também acrescenta a pessoa à lista, para que a próxima reunião a sugira, e reescreve o resumo em torno do nome.

Quando dás nome a uma voz na aplicação, a lista começa com «Eu» (Me), com o nome da tua conta ao lado: um toque põe o teu nome nessa voz exatamente como a tua conta o escreve (desde a build 249).

O reconhecimento de uma voz de uma reunião para a outra só acontece para quem ativou para si próprio o «Reconhecimento da própria voz» (Own-voice recognition) (Definições, alteradas a pedido). A voz dessas pessoas já chega com nome nas suas próprias reuniões e nas reuniões da empresa para as quais foram convidadas. Todas as outras vozes começam como speaker_0, speaker_1 … e recebem nome à mão. Um nome que o Chui pôs numa voz muda-se com um toque, como qualquer outro.

Um nome que o Chui deduziu da conversa e que ninguém confirmou ainda aparece como um nome normal que é apenas um palpite. Ao tocar nele, aparecem «Sim, é …» (Yes, this is …), que o torna definitivo, e «Não é …», que o retira. Através de um assistente, get_meeting() lista esses nomes em tentative_speaker_names. Dar à voz o mesmo nome confirma-o, e prepare_reject_speaker_name() seguido de reject_speaker_name() retira-o.

Quando falha

Cada falha diz qual é e o que se pode fazer: o ficheiro foi cortado antes de ser guardado; o áudio nunca chegou; o formato não pode ser lido; a transcrição ficou sem tempo (a gravação está segura, tenta mais tarde); o resumo não foi escrito, mas a transcrição está lá. A maioria permite tentar outra vez.

Quando um resumo não pode ser escrito por causa de uma falha do lado do Chui, o Chui continua a tentar sozinho de hora a hora durante cerca de um dia (desde a build 230), por isso um problema durante a noite não deixa a reunião à espera de «Voltar a escrever o resumo» (Write the summary again).

Eliminar uma reunião

Eliminar uma reunião destrói a gravação, a transcrição, o resumo e as notas, em todo o lado onde existam, para sempre. Destrói também tudo o que o Chui tinha aprendido dessa conversa sobre as pessoas que nela participaram. Qualquer link público para ela deixa de funcionar. O Chui lembra-se de que a reunião foi eliminada. Assim, um telemóvel que ainda tenha o áudio deita-o fora em vez de o voltar a enviar mais tarde. Nada recupera nada disto.

Na aplicação, é Eliminar reunião no fundo da reunião, ou deslizar a linha. Em ambos os casos, o Chui pergunta primeiro num painel que indica o nome da reunião.

Um assistente também o pode fazer, e pergunta da mesma maneira: em dois passos, porque é uma das coisas que não se podem desfazer. prepare_delete_meeting() mostra de que reunião se trata: como se chama, quando foi, quanto durou, se escreveste notas nela e se alguém fora do Chui a está a ler através de um link. Nesse momento ainda nada aconteceu. Só depois de dizeres que sim é que delete_meeting() a destrói, e não aceita mais nada além da resposta a essa pergunta. Não há forma de o apontar para uma reunião que não te tenha acabado de ser mostrada. Um colega que consegue abrir uma reunião que alguém partilhou com a equipa não a pode eliminar. Só quem a gravou o pode fazer.

Quando uma conversa acabou em duas reuniões

Paraste a gravação no intervalo e voltaste a gravar depois, ou a gravação falhou e o Chui guardou o resto da reunião à parte. Seja como for, uma só conversa está na tua lista como duas linhas, com dois resumos e dois conjuntos de oradores.

Pede a um assistente que as junte. prepare_merge_meetings() mostra as duas: qual fica, quanto dura cada uma, quanto durou o intervalo entre elas e quanto duraria a gravação junta. Nesse momento ainda nada aconteceu. Só depois de dizeres que sim é que merge_meetings() o faz, e não aceita mais nada além da resposta a essa pergunta.

O que faz: as duas gravações são postas uma a seguir à outra, pela ordem em que foram feitas, dentro da reunião mais antiga, que mantém o identificador e a data. A reunião mais recente é depois eliminada. O Chui volta a ler a gravação junta desde o início. Assim, a reunião fica com uma transcrição, um resumo e um conjunto de oradores que cobrem a conversa toda. Isso demora alguns minutos. As notas escritas em qualquer das reuniões são mantidas, por ordem, e as da segunda metade são deslocadas na linha do tempo.

Nunca se perde áudio com isto. Cada segundo das duas gravações está dentro da reunião que fica, e é medido antes de se mexer na outra linha. O que não volta são as palavras: os dois resumos e as duas transcrições são substituídos, incluindo as correções feitas à mão em qualquer um deles, e nada repõe as duas linhas. Não há como anular.

Há mais duas coisas que convém saber antes de o pedires. Se as duas metades forem vistas por pessoas diferentes (uma partilhada com a tua empresa, outra guardada só para ti), a reunião junta é vista por quem podia ver a mais privada das duas. Assim, nada que guardaste só para ti fica à vista de alguém por ter sido junto. E se alguma das metades estava ligada a uma entrada no calendário, a reunião junta mantém essa ligação e continua na sua série.

Há três coisas que o Chui recusa, e di-lo antes de decidires, não depois.

Não junta duas gravações que não consegue unir honestamente, como duas metades gravadas com definições diferentes, ou uma feita num telemóvel e outra num Mac. Recusa em vez de produzir um ficheiro que reproduz a reunião errada. Não junta duas linhas que começaram no mesmo instante e duraram o mesmo tempo: isso é uma só conversa que chegou ao Chui duas vezes, não duas metades de uma. Juntá-las daria uma reunião que diz tudo duas vezes. Nesse caso, elimina antes uma delas.

E ainda não consegue juntar nada gravado num separador do browser. Uma gravação feita no browser escreve o índice à medida que avança, em vez de num só sítio no fim, e o Chui não tem forma de unir duas dessas. As gravações em si estão bem e reproduzem-se normalmente. O Chui só não as consegue juntar. As duas metades de uma reunião que queiras juntar têm de ter sido gravadas num telemóvel, num Mac ou num PC com Windows.

Numa conta gratuita, há um último caso. Se a reunião que ficaria ainda não foi lida (uma em que algo correu mal, por exemplo) e as dez reuniões do mês já foram usadas, o Chui recusa. Ler a gravação junta seria a primeira leitura e ficaria retida até ao fim do mês, com as duas metades bloqueadas de uma vez. Uma conta paga não tem esse limite. Caso contrário, podem ser juntas no mês seguinte. Quanto custa uma conta explica os limites de uma conta gratuita.

Não há nenhum botão para isto no Chui. É uma reparação que notas ao ler as duas reuniões, e é aí que faz sentido pedi-la.

Quando uma gravação afinal eram várias reuniões

O contrário: deixaste o telemóvel em cima da mesa, ou o portátil aberto, e três conversas foram parar a uma só gravação. O Chui guardou uma reunião com um único resumo, que fala de todas e, por isso, de nenhuma.

Nas builds 238 e 239, uma gravação no telemóvel dividia-se sozinha em reuniões separadas a cada silêncio longo, à medida que avançava; desde a build 240, «Nova gravação» no telemóvel volta a fazer uma só gravação, que dura até «Parar» (Gravar uma reunião).

Normalmente, o Chui dá por isso sozinho. Depois de ler uma gravação de meia hora ou mais, o Chui verifica se são realmente várias reuniões, sobretudo por quem está a falar. Onde algumas pessoas se calam de vez e outras começam, aí acaba uma reunião. O Chui confronta cada um desses pontos com o assunto da conversa, com o teu calendário e com eventuais pausas. Só quando tudo bate certo é que o ecrã da reunião mostra um cartão: «Parecem 3 reuniões separadas» (Looks like 3 separate meetings), com cada parte, a sua hora, um título e as pessoas que nela participaram. Desmarca uma parte para a manter junta à vizinha. «Dividir em N» (Split into N) corta-a, e «É uma só reunião» (It’s one meeting) faz o cartão desaparecer de vez.

Ou pergunta onde se divide. find_split_points() responde com a sugestão do próprio Chui (as mesmas partes que o cartão mostra, com os nomes). Lista também os silêncios longos: a que distância do início da gravação está cada um, quanto durou, a última coisa dita antes e a primeira dita depois. Não altera nada do que se vê. Se disseres que é uma só reunião, keep_as_one_meeting() é o «É uma só reunião» por escrito.

Depois, pede o corte. prepare_split_meeting() indica cada parte que passaria a existir: quando começa, quanto dura e a primeira coisa dita nela. Nesse momento ainda nada aconteceu. Só depois de dizeres que sim é que split_meeting() o faz, e não aceita mais nada além da resposta a essa pergunta.

O que faz: o áudio é dividido exatamente onde indicaste, e cada parte torna-se uma reunião própria. A primeira parte mantém o identificador desta reunião, a data, o título e o link publicado. As restantes são reuniões novas, que começam nas horas em que foram realmente gravadas. Nada é regravado e nada é transcrito de novo. O Chui sabe em que segundo foi dita cada palavra, por isso as palavras da primeira hora ficam simplesmente com a primeira hora. Os nomes atribuídos às vozes mantêm-se exatamente como estão. As tuas notas vão com a parte durante a qual foram escritas. O Chui escreve depois um novo resumo para cada parte, o que demora menos de um minuto.

Não conta para as dez reuniões por mês de uma conta gratuita. Nada é enviado para ser transcrito outra vez, por isso não há nada a cobrar: se tinhas usado nove reuniões antes do corte, continuas com nove depois dele.

O que perdes é o resumo da gravação inteira, e o que esse resumo acrescentou à informação sobre as pessoas que nela participaram. O Chui volta a escrever essa informação a partir dos novos resumos. Não se perde áudio nem palavras. Não há como anular. Voltar a juntar as partes com merge_meetings() funcionaria, mas isso volta a ler a gravação junta de raiz e demora alguns minutos.

O Chui recusa o corte, antes de te perguntar o que quer que seja, em quatro casos: uma parte que ficaria com menos de dez segundos; uma gravação feita num separador do browser, cujo índice o Chui ainda não consegue cortar; uma reunião que ainda está a ler; e uma reunião para a qual não tem os tempos de cada palavra. Neste último caso, o Chui avisa, e voltar a ler a reunião resolve o problema.

Uma reunião que o Chui montou depois de o dispositivo de gravação ter deixado de enviar pode ser dividida, ou junta a outra reunião, de imediato (desde a build 247). Se esse dispositivo enviar mais tarde o resto da gravação, a parte que o Chui não tinha chega como uma reunião separada.

O único botão para isto está no cartão que o Chui mostra quando suspeita que uma gravação contém várias reuniões. Um corte em qualquer outro ponto pede-se por palavras.