Exploração de dados
Eu sugeriria explorar os dados um pouco mais, o que pode ajudar a decidir qual seria a melhor abordagem para esse conjunto de dados de canções de pássaros.
Por exemplo, dê uma olhada no espectrograma de cada ave (existem apenas 66 tipos de gêneros diferentes), para ver como você pode extrair mais dados das amostras. Aqui está o espectrograma de uma amostra retirada daqui :
Podemos ver que há claramente um padrão repetitivo! Podemos ver aqueles altos blocos verdes claros aparecendo intermitentemente por toda parte. Portanto, embora a amostra tenha pouco mais de 70 segundos de som, a chamada do pássaro parece durar apenas cerca de 2 segundos!
Com um algoritmo de filtragem simples ou até mesmo a construção de um modelo para encontrar esses pedaços, você pode extrair esses pedaços e trabalhar apenas neles, talvez junto com os dados referentes às lacunas entre esses pedaços.
Esse é apenas um exemplo de pré-processamento específico de dados; Estou certo de que existem muitas outras maneiras de melhorar a densidade de informações.
Taxa de amostragem
Esse é outro grau de liberdade que você pode ver. Uma idéia seria aceitar amostras diferentes dentro da sua entrada para um modelo. Pode-se ajustar a taxa de amostragem para garantir que todas as amostras finais tenham o mesmo comprimento.
Minha idéia seria usar o tamanho da amostra mais curta e, em seguida, realizar amostragens regulares de todos os trechos de som mais longos, de modo que os trechos resultantes tenham o mesmo tamanho da sua amostra mais curta.
Esse método obviamente comprometerá a qualidade dos dados (irregularmente entre as amostras), mas se o amostrador inicial for suficientemente alto, você poderá se safar!
Dê uma olhada neste artigo útil que descreve muitos métodos em (pré-processamento) ondas sonoras.
Dois modelos
No seu caso particular, se você realmente tiver apenas dois comprimentos possíveis: 8637686
e 3227894
... pode ser viável criar dois modelos, um para cada comprimento de amostra. Definitivamente, não é uma solução ideal; no entanto, permitiria um desenvolvimento muito rápido e iterações de modelo, pois você poderia usar o mesmo modelo e precisaria alterar apenas o parâmetro para usar as duas partes dos dados.
Fundamentos
Além de truncar suas amostras mais longas (cortando-as para corresponder ao comprimento das amostras mais curtas / mais curtas - você pode usar o preenchimento para simplificar as amostras em curto para que correspondam ao comprimento da amostra mais longa.
Normalmente, isso é feito simplesmente adicionando zeros ao final dos vetores. Você também pode tentar adicionar zeros no início e no final para manter as informações centralizadas em cada amostra.
Se você criar uma rede neural usando o Keras, provavelmente seria melhor olhar primeiro para a camada ZeroPadding1d .