File size: 946 Bytes
1905805
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import wave
import ffmpeg

from utils.config import Config

def pitch_audio(ab: bytes, sr: int, sw: int, ch: int, pitch_amount: int):
    # ffmpeg -i "input.wav" -af "rubberband=smoothing=on:pitch=2^(1/2):pitchq=quality:window=short:channels=apart:phase=independent" "output.wav"
    speed_factor = 2 ** (pitch_amount/12)
    
    with wave.open(Config().ffmpeg_working_src, 'wb') as f:
        f.setframerate(sr)
        f.setsampwidth(sw)
        f.setnchannels(ch)
        f.writeframes(ab)
        
    ffmpeg.input(
        Config().ffmpeg_working_src
    ).filter(
        "atempo",
        1/speed_factor
    ).filter(
        "asetrate",
        sr*speed_factor
    ).output(
        Config().ffmpeg_working_dest
    ).run(
        overwrite_output=True,
        quiet=True
    )
    with wave.open(Config().ffmpeg_working_dest, 'r') as f:
        return f.readframes(f.getnframes()), f.getframerate(), f.getsampwidth(), f.getnchannels()