MCPcopy Create free account
hub / github.com/FACEGOOD/FACEGOOD-Audio2Face / audioProcess

Function audioProcess

code/train/step1_LPC.py:38–110  ·  view source on GitHub ↗
(wav_path)

Source from the content-addressed store, hash-verified

36 os.makedirs(os.path.join(project_dir, 'lpc'))
37
38def audioProcess(wav_path):
39 # 读取wav文件,存入list
40 rate, signal = wavfile.read(wav_path) # rate:采样率
41 # print(len(signal))
42 # print('signal:',signal[1000:2000])
43 print('rate: ', rate) # 采样率
44
45 frames_per_second = 30 # 视频fps
46 chunks_length = 260 # 音频分割,520ms
47 audio_frameNum = int(len(signal) / rate * frames_per_second) # 计算音频对应的视频帧数
48 print('audio_frameNum: ', audio_frameNum)
49
50 # 前后各添加260ms音频
51 a = np.zeros(chunks_length * rate // 1000, dtype=np.int16)
52 signal = np.hstack((a, signal, a))
53
54 # signal = signal / (2.**15)
55 frames_step = 1000.0 / frames_per_second # 视频每帧的时长间隔33.3333ms
56 rate_kHz = int(rate / 1000) # 采样率:48kHz
57
58 # 分割音频
59 audio_frames = [signal[int(i * frames_step * rate_kHz):
60 int((i * frames_step + chunks_length * 2) * rate_kHz)]
61 for i in range(audio_frameNum)]
62 inputData_array = np.zeros(shape=(1, 32, 64)) # 创建一个空3D数组,该数组(1*32*64)最后需要删除
63
64 for i in range(len(audio_frames)):
65 print(i)
66 audio_frame = audio_frames[i] # 每段音频,8320个采样点
67
68 overlap_frames_apart = 0.008
69 overlap = int(rate * overlap_frames_apart) # 128 samples
70 frameSize = int(rate * overlap_frames_apart * 2) # 256 samples
71 numberOfFrames = 64
72
73 # initiate a 2D array with numberOfFrames rows and frame size columns
74 frames = np.ndarray((numberOfFrames, frameSize))
75 for k in range(0, numberOfFrames):
76 for i in range(0, frameSize):
77 if ((k * overlap + i) < len(audio_frame)):
78 frames[k][i] = audio_frame[k * overlap + i]
79 else:
80 frames[k][i] = 0
81
82 frames *= np.hanning(frameSize)
83 frames_lpc_features = []
84
85 # a = (c_double*frameSize)()
86 b = (c_double * 32)()
87
88 # linear predictive coding
89 for k in range(0, numberOfFrames):
90 # temp_list = frames[k]
91 a = (c_double * frameSize)(*frames[k])
92 # a = (c_double*len(frames[k]))()
93 # b = (c_double*32)()
94 # LPC(float *in, int size, int order, float *out)
95 dll.LPC(pointer(a), frameSize, 32, pointer(b)) # linear predictive coding

Callers 1

step1_LPC.pyFile · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected