簡體   English   中英

使用Android MediaCodec編碼時修改音頻音調/速度

[英]Modify audio pitch / tempo while encoding with android MediaCodec

我正在使用AudioRecord從設備麥克風實時獲取音頻,並使用MediaCodecMediaMuxer類將其編碼/保存到后台文件中。

在將音頻流保存到文件之前,是否可以更改其音高和(或)速度?

要修改音頻流的音調/速度,您必須在使用編解碼器對其進行編碼之前自行重新采樣。 請記住,如果更改流的速度,則還需要修改時間戳。

用音調/速度,您是指頻率本身,還是采樣速度? 如果是這樣,則每個樣本應在較短或較長的時間內投影:

例:

    private static byte[] ChangePitch(byte[] samples, float ratio) {

        byte[] result = new byte[(int)(Math.Floor (samples.Length * ratio))];

        for (int i = 0; i < result.Length; i++) {
            var pointer = (int)((float)i / ratio);
            result [i] = samples [pointer];
        }

        return result;
    }

如果您只是想更改音高而不影響速度,那么您需要閱讀有關相位聲碼器的信息。 這是一門可靠的科學,並且有很多項目可以實現這一目標。 https://zh.wikipedia.org/wiki/階段語音編碼器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM