Como preservar melhor a qualidade de um arquivo .amr usando ffmpeg

Como preservar melhor a qualidade de um arquivo .amr usando ffmpeg

Tenho um registro de áudio que me é precioso, feito anos atrás, e que recebi por meio de uma mmsespécie de mensagem no meu antigo telefone GSM.

Segundo ffprobe.exe -show_entries format:stream -count_frames -count_packets -i mms-1.amr > input.txt, o áudio possui as seguintes especificações:

    [STREAM]
    codec_name=amr_nb
    codec_long_name=AMR-NB (Adaptive Multi-Rate NarrowBand)
    codec_time_base=1/8000
    codec_tag_string=samr
    sample_rate=8000
    channels=1
    channel_layout=mono
    bits_per_sample=0
    duration_ts=275840
    duration=34.480000
    bit_rate=6000
    nb_read_frames=1724
    nb_read_packets=1724
    [/STREAM]
    [FORMAT]
    filename=mms-1.amr
    nb_streams=1
    format_long_name=3GPP AMR
    bit_rate=6401
    probe_score=100
    [/FORMAT]

Então, tentei várias vezes, ffmpegmas a única abordagem viável que encontrei foi uma conversão de duas pernas, extraindo rawprimeiro o áudio:

1)ffmpeg -i mms-1.amr -f s16le -c:a pcm_s16le output.raw

2)ffmpeg -f s16le -ar 8000 -ac 1 -i output.raw mms-1.wav

Curiosamente, o tamanho do arquivo original é 27 KB, o arquivo wave tem 539 KB!

Duas questões:

  1. Esta é a única maneira de converter um tipo de arquivo de áudio .amr em qualquer formato para ser facilmente reconhecido pelo Windowssistema? Que tal uma única linha de código para converter diretamente no wavformato?

  2. Existe/existem/alguns bons filtros de áudio no ffmpeg para acentuar uma voz na gravação. A resposta para uma pergunta antigaaquimenciona "equalizandocomo uma técnica adequada para filtrar ruídos e melhorar o reconhecimento de voz..." mas até agora não consegui encontrar uma boa explicação de como funciona. Algum outro filtro?

informação relacionada