Como converter partituras em código e XML com o Audiveris
Se você já tentou digitalizar partituras antigas e reproduzi-las em um sintetizador ou abri-las em um editor de música como o MuseScore, provavelmente sabe o quanto o processo pode ser agonizante. O OCR padrão como o Tesseract é inútil aqui: os caracteres de texto estão presos a um pentagrama de cinco linhas, enquanto durações de notas, acordes, pausas e marcações de dinâmica formam uma estrutura gráfica bidimensional.
É aí que entra o OMR — Optical Music Recognition. Não existem muitos projetos nessa área, e os sistemas maduros de código aberto podem ser contados nos dedos de uma mão. O Audiveris é provavelmente o motor de reconhecimento de música de código aberto mais conhecido, desenvolvido ativamente por muitos anos.
O Principal Desafio no Reconhecimento de Música
Os desenvolvedores do Audiveris reconhecem honestamente na documentação um fato importante: alcançar 100% de precisão no reconhecimento de música apenas por meios algorítmicos é praticamente impossível. Escaneamentos reais de arquivos como o IMSLP frequentemente sofrem com vincos no papel, inclinação, tinta desbotada e fontes não padronizadas de editoras do século XIX. Se um erro se infiltrar na armadura de clave no início de uma linha, toda a decodificação subsequente se transforma em cacofonia.
Portanto, o conceito por trás do Audiveris é construído sobre dois componentes intimamente ligados:
- Motor computacional (OMR Engine)
- Editor gráfico integrado (OMR Editor)
Primeiro, o motor realiza o reconhecimento e, em seguida, um humano intervém. Na interface do programa, você pode corrigir inclinações, corrigir símbolos reconhecidos ou ajustar parâmetros do algoritmo em tempo real, sem reprocessar todo o documento.
Como o Motor de Reconhecimento Funciona
A arquitetura do Audiveris pode ser descrita como híbrida. Os criadores não confiaram cegamente apenas na análise clássica por computador ou apenas em aprendizado profundo. Para cada tipo de elemento de notação musical, eles selecionaram seu próprio método:
- Linhas de pentagrama e grade são detectadas usando algoritmos especializados de detecção de linhas retas.
- Traços de notas (ligaduras que conectam semínimas e semicolcheias) são reconhecidos através de morfologia matemática de imagem.
- Elementos de texto como títulos, marcações de andamento e letras são passados para um motor OCR externo.
- Cabeças de nota são identificadas através de correspondência de modelos.
- Todos os outros símbolos de tamanho fixo são processados por uma rede neural.
O resultado é salvo em um formato XML interno com a extensão .omr ou exportado para o padrão MusicXML 4.0. Este formato é compreendido por praticamente todos os softwares modernos de notação musical: Finale, Sibelius, Dorico e MuseScore.
Cuidado com os Nomes de Domínio
Um detalhe interessante do README do repositório: os autores alertam especificamente os usuários sobre um site falso audiveris.com.
O projeto real está no GitHub e em seu site associado no GitHub Pages. Um site com o domínio .com imita o recurso oficial, mas redireciona as pessoas para serviços de terceiros com criptomoedas e apostas. Tenha cuidado se decidir baixar uma distribuição pronta.
Como Compilar e Executar o Projeto
O código é escrito em Java e construído com o Gradle. Você precisará do JDK 17 ou mais recente e do Git para trabalhar com ele.
O projeto utiliza um esquema de ramificação clássico:
- O branch
mastercontém apenas lançamentos estáveis. - Todo o desenvolvimento ativo acontece no branch
development.
Clone o repositório e construa o projeto a partir do branch de desenvolvimento:
git clone https://github.com/Audiveris/audiveris.git
cd audiveris
git checkout development
./gradlew build
Uma vez que a compilação estiver concluída, você pode executar a aplicação diretamente via Gradle:
./gradlew run
Se você não planeja modificar o código em si e apenas deseja converter partituras, os desenvolvedores fornecem instaladores prontos para Windows (.msi), Linux (.deb e Flatpak no Flathub) e macOS (.dmg). Eles já incluem o Java Runtime Environment necessário, então você não precisará configurar o ambiente manualmente.
Por que Isso Importa para Desenvolvedores
O Audiveris é interessante não apenas para músicos. Se você está desenvolvendo serviços para trabalhar com conteúdo de mídia, arquivos digitais ou programas educacionais, este projeto oferece ótimas oportunidades:
- Use a API Java. Você pode integrar o Audiveris como uma biblioteca no seu projeto e automatizar o processamento de partituras em PDF em um servidor.
- Acesse a estrutura original do documento. O formato
.omrcontém informações detalhadas sobre a geometria dos elementos reconhecidos, o que é conveniente para análise ou treinamento dos seus próprios modelos.
A curva de aprendizado aqui é bastante razoável, e o código licenciado sob AGPLv3 fornece um bom exemplo de como construir sistemas híbridos complexos de processamento de imagem.
Conclusão
Se você está enfrentando a tarefa de digitalizar arquivos de partituras ou incorporar reconhecimento de partituras na sua aplicação, não é mais necessário olhar para ferramentas proprietárias que custam centenas de dólares. O Audiveris demonstra uma abordagem pragmática ao OMR: combinar algoritmos automáticos com correção manual conveniente oferece resultados práticos excelentes.
Projetos relacionados