오류 해결 관련 질문입니다..

조회수 308회

녹음파일과 음원을 합성하는 코딩 중입니다..

line 24, in <module>
    v_data = np.array(v_data[0:len(v_data):diffRate])
TypeError: slice indices must be integers or None or have an __index__ method

이러한 오류가 뜨면서 자꾸 실행이 되지 않습니다.. 뭐가 문제인걸까요..?

<전체 코드>

import numpy as np                                        
import matplotlib.pyplot as plt                          
import scipy.io as sio            
from scipy.io.wavfile import write                      
import os

v_samplerate, v_data = sio.wavfile.read('voice.wav')
b_samplerate, b_data = sio.wavfile.read("Invisible_Beauty.wav")

v_times = np.arange(len(v_data))/float(v_samplerate)
b_times = np.arange(len(b_data))/float(b_samplerate)

if (len(v_data.shape) > 1) : 
   v_data = np.array(v_data[:,0])
if (len(b_data.shape) > 1) : 
   b_data = np.array(b_data[:,0])

if (v_samplerate > b_samplerate) :
   diffRate = v_samplerate / b_samplerate
   v_data = np.array(v_data[0:len(v_data):diffRate])
   sr = b_samplerate
elif (v_samplerate < b_samplerate) : 
   diffRate = int(b_samplerate / v_samplerate)
   b_data = np.array(b_data[0:len(b_data):diffRate])
   sr = v_samplerate
else :
   sr = b_samplerate

mix_data = v_data + b_data[sr*10:len(v_data)+sr*10]

b_data[sr*10:len(v_data)+sr*10] = mix_data

scaled = np.int16(b_data/np.max(np.abs(b_data)) * 32767)
write('voice2.wav', sr, scaled)
os.system("start voice2.wav")
  • 슬라이스([:,0])에는 쉽표 찍으면 안됩니다. 초보자 2022.5.20 16:30
  • 4번째 문단 말씀하시는거죠..? 말씀대로 수정해봤는데도 똑같은 오류 뜨네요.. 김도현 2022.5.20 16:33
  • 아.. 잘못 알려드렸네요. diffRate가 float인데 int 객체만 넣어줘야 합니다. 초보자 2022.5.20 16:35
  • 해결되었습니다.. 감사합니다! 김도현 2022.5.20 16:43

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)