전체 글 229

오버랩핑된 문자열 잇기

openai 의 whisper 를 이용하여 음성을 문자변환시에 한번에 변환할 수 있는 용량이 25MB 이기 때문에 이보다 큰 음성파일의 경우는 pypub 라이브러리를 이용하여 작게 분리를 해서 처리를 해야 한다. 이때 강제적으로 사이즈만큼 분리를 하면 대화중의 음성이 끊어지게 되므로 앞뒤를 약간 오버랩핑하게 하여 각각 변환을 하면 똑같은 대화 문자열이 각 음성파일의 맨 뒤와 맨 처음 오버랩핑되어 출력된다. 이 오버랩핑된 문자열을 자연스럽게 한 문장으로 만드는 방법은 아래와 같다. ( 음성파일을 분석하여 무음인 상태를 발견하여 분리하는 방법도 시도해 봤지만, 노이즈가 섞여있기 때문에 어렵다. ) string1 = 'Hello how are you' string2 = 'are you doing now?' i..

data science/python 2024.02.02

10 Important Phrasal Verbs You Need To Know To Understand Native Speakers (With QUIZ)

1. Tune someone out (상대방의 말에) 귀를 막다, 무시하다. 2. Tick someone off someone을 화나게하다. 주어는 화나게하는 주체 3. Talk something(somone) up something(someone)을 아주 좋게 말하다. 4. Pile up 주어가 쌓이다. 주로 현재 진행형으로 쓰임. is piling up. 5. Mope around 주어가 (부정적으로 쓸데없이) 돌아다니다. 6. Loosen up 주어가 편안해 지다. 긴장을 풀다. 7. Kick off 주어가 시작되다. 목적어를 시작하다. 8. Horse around = Goof around 주어가 천방지축 거리다. 9. Get by (금전적으로) 그럭저럭 지내다. 10. Flip out 주어가 (긍..

youtube english 2024.01.30

바이너리 분류 모델에 있어서 평가 항목

Confusion Matrix 샘플 결과 TP 1 FN 29 FP 0 TN 970 Accuracy (정확도) 전체 결과에 대한 True 의 비율 Accuracy = (TP + TN) / (TP + FN + FP + TN) = 971 / 1000 = 0.971 Precision (정밀도) (모델의 관점) True(=1) 이라고 예측한 것 중에 실제 True의 비율 Precision = TP / (TP + FP) = 1.0 Recall (재현율) (True 입력 데이터의 관점) True 입력데이터중에 True라고 예측한 비율 Recall = TP / (TP + FN) = 1 / 30 = 0.033 F1 Score Precision과 Recall의 밸랜스도를 나타낸다. 어느 한쪽이 극단적으로 낮으면 F1 도 ..

일반 데이터 학습용/테스트용 분리

지난번에는 이미지 데이터가 대상인 Data Augmentation의 ImageDataGenerator 를 이용하여 학습데이터를 분리하였다. 이번에는 단순히 pandas 로 읽어들인 숫자 문자등의 데이터를 분리해 보겠다. 1. numpy 를 이용하는 방법 import numpy as np def shuffle_and_split_data(data, test_ratio): np.random.seed(42) # np.random.permutation(length) : 랜덤으로 일련번호의 순서를 바꿈 shuffled_indices = np.random.permutation(len(data)) # 테스트 사이즈를 계산 test_set_size = int(len(data) * test_ratio) # 초반 test_..

pydub.AudioSegment

Install Package pip install pydub # 내부적으로 ffmpeg 라이브러리를 사용하기에 OS에 맞게 ffmpeg 설치 필요 불러오기 from pydub import AudioSegment wav_audio = AudioSegment.from_wav("input.wav") mp3_audio = AudioSegment.from_mp3("input.mp3") 정보 # 프레임레이트 print(wav_audio.frame_rate) # 채널수 (스테레오=2, 모노=1) print(wav_audio.channels) # 재생시간 print(wav_audio.duration_seconds) frame rate 변경 sound = audio.set_frame_rate(16000) 저장 wav_a..

7. 결과분석

Time-domain analysis 값 판단기준 판정 SDNN 40.97 비건강: 100 비건강 pNN50/NN50 0.34/1 50mm이상 차이가 나는 간격수와 비율 높을수록 건강 비건강 자연로그RMSSD 2.6 범위: 0 ~ 6.5 0 ~ 100 으로 환산 (값 / 6.5 x 100) 40 건강: 70 이상 보통: 50 ~ 70 비건강: 50미만 비건강 Frequency-domain analysis 정의 약어 한글 풀네임 주파수 파워 관계 SNS 교감신경 Sympathetic Nervous Systems LF / HF PSNS(또는 PNS) 부교감신경 Parasympathetic Nervous System HF ※ HF( 주파수 0.15 ~ 0.4 Hz) 는 ..

6. Heart Rate Variability (HRV)

심박 변이도(HRV)의 이해와 중요성HRV란 무엇인가?심박 변이도(Heart Rate Variability, HRV)는 심박 간격의 미세한 변화를 의미합니다. 이는 연속된 심장 박동 사이의 시간이 약간씩 늘어나거나 줄어드는 현상을 말합니다.HRV는 특수 장비 없이는 인지하기 어려우나, 건강한 사람들에게도 존재합니다.심장 상태, 불안, 우울증 등 신체 및 정신 건강 상태를 반영할 수 있습니다.HRV 자체는 일반적인 현상으로, 부정맥을 의미하지 않습니다.정상적인 심박 리듬일반적인 심박은 "Sinus Rhythm"이라고 합니다.심박 간격이 0.12초보다 길 경우 "Sinus Arrhythmia"이라고 합니다.부정맥은 주로 호흡에 의해 발생하며, 정상적인 심혈관계 반응의 일부입니다.호흡과 무관한 경우, 다른 심..

5. R-R Intervals

R-R Intervals 계산 numpy.diff 를 이용하여 전후 피크들의 차를 구한다. # rr_peaks 는 샘플의 간격 rr_ecg = np.diff(rr_peaks) # 샘플간격을 초단위로 변환 -> 1간격 = (1000 / 샘플링) rr_ecg = rr_ecg * (1000 / 130) 인터폴레이션함수 정의 ( 주파수 분석을 위해 ) # rr_ecg 는 밀리초 단위 # x 축 = RR간격을 나열(=축적) # 나중에 1초를 4등분(=0.25초)해야 하므로 밀리초를 초로 변환(= 1000 으로 나눔) x_ecg = np.cumsum(rr_ecg) / 1000 # 위의 X축과 RRI값을 Y축으로 하는 인터폴레이션 함수를 선언 f_ecg = interp1d(x_ecg, rr_ecg, kind='cub..