보이스 피싱 AI 구별법(NLP)

2023. 6. 8. 14:18BOOTCAMP/프로그래머스 인공지능 데브코스

음성 인식 및 분석은 딥러닝의 한 분야로, 이를 위해 여러 가지 알고리즘이 개발되었습니다. 이 중에서도, 음성의 특성을 분석하여 사람의 목소리와 AI가 생성한 목소리를 구별하는 방법 중 하나는 스펙트로그램을 사용하는 것입니다. 스펙트로그램은 시간에 따른 주파수의 분포를 시각화한 것으로, 음성의 특성을 잘 나타냅니다.

 

다음은 이를 구현하는 간단한 파이썬 코드입니다. 이 코드는 두 개의 오디오 파일(하나는 사람의 목소리, 다른 하나는 AI가 생성한 목소리)을 입력으로 받아, 각각의 스펙트로그램을 생성하고, 이를 비교하여 두 오디오 파일이 같은 소스에서 왔는지를 판단합니다.

보이스피싱 범죄 / KBS뉴스

import numpy as np
import matplotlib.pyplot as plt
import scipy.io.wavfile as wav
from scipy.signal import spectrogram

# 오디오 파일 읽기
sample_rate_human, data_human = wav.read('human_voice.wav')
sample_rate_ai, data_ai = wav.read('ai_voice.wav')

# 스펙트로그램 생성
frequencies_human, times_human, Sx_human = spectrogram(data_human, fs=sample_rate_human, window='hanning',
                                                      nperseg=1024, noverlap=M//8, detrend=False, scaling='spectrum')
frequencies_ai, times_ai, Sx_ai = spectrogram(data_ai, fs=sample_rate_ai, window='hanning',
                                              nperseg=1024, noverlap=M//8, detrend=False, scaling='spectrum')

# 스펙트로그램 시각화
plt.pcolormesh(times_human, frequencies_human, 10 * np.log10(Sx_human), cmap='inferno')
plt.pcolormesh(times_ai, frequencies_ai, 10 * np.log10(Sx_ai), cmap='inferno')

# 스펙트로그램 비교
difference = np.abs(Sx_human - Sx_ai)
print('Difference between human and AI voice:', np.mean(difference))

이 코드는 간단한 예시이며, 실제 음성 분석에서는 더 복잡한 알고리즘이 사용될 수 있습니다. 예를 들어, 머신 러닝 모델을 사용하여 스펙트로그램의 패턴을 학습하고, 이를 바탕으로 사람의 목소리와 AI의 목소리를 구별할 수 있습니다.

 

또한, 노이즈를 추가하여 모델의 강건성을 향상할 수도 있습니다. 이러한 방법은 데이터 증강(data augmentation)이라고 하며, 모델이 다양한 환경에서도 잘 작동하도록 돕습니다.

 

한편, 한국과학기술원(KAIST) 김용대 전기전자공학부 교수연구팀은 21일 이동통신사가 보이스피싱에 사용되는 심박스(SIM box)를 식별할 수 있는 원천기술을 개발했다고 밝혔습니다. 

 

1000여개의 단말 기능 정보를 기기별 고유정보로 활용해 기종을 분류하여 100여종의 휴대폰 모델들이 구분되는 것을 확인했습니다. 단말의 기능에 따라 구별이 가능하기 때문에 상대적으로 단순한 기능만 지원하는 심박스도 구별해낼 수 있는 것입니다.