상세 컨텐츠

본문 제목

huggingface에 자신의 데이터셋 push하기

머신러닝/함수, 라이브러리

by byoelcardi 2023. 8. 29. 20:35

본문

huggingface에는 모델만 공개된 것이 아니라 다음과 같이 dataset도 오픈되어 있습니다.

출처 https://huggingface.co/datasets

자신이 사용하고 있는 dataset도 다음과 같이 공유할 수 있습니다. 하지만 선행작업이 필요합니다. 바로 huggingface-cli

로그인 작업입니다. 관련된 자료는 아래를 참고해주시면 감사하겠습니다.

https://byeolcardi.tistory.com/30

 

huggingface-cli 로그인 방법

자신이 huggingFace에 자신의 모델을 Porting하고 나서 사용하려면 huggingface-cli 로그인이 필요합니다. Hugging Face CLI 설치를 우선적으로 진행해야 합니다. pip install huggingface_hub Hugging Face CLI 로그인을 하

byeolcardi.tistory.com

파이썬 코드를 통해서 음성파일, text(음성 파일을 text로 변환한 것) pair를 추가하는 파이썬 코드는 다음과 같습니다.

from datasets import load_dataset, DatasetDict
import torchaudio

# 불러올 데이터셋의 이름과 버전
dataset_name = "byeolcardi/stt_data"

# 새로 추가할 데이터
new_audio_file = "1.wav"  # 실제 음성 파일 경로
new_text_label = "안녕하세요"  # 해당 오디오 파일에 대한 텍스트 라벨

# 기존 데이터셋 불러오기
dataset = load_dataset(dataset_name)

# 음성 파일을 텐서로 변환
waveform, sample_rate = torchaudio.load(new_audio_file)

# 새로운 데이터를 추가하여 데이터셋을 확장
new_data = {
    "audio": [waveform],  # 음성 파일의 waveform을 리스트에 추가
    "text": [new_text_label]
}
new_dataset = dataset.map(lambda example: new_data, batched=True)

# 데이터셋을 Hugging Face Hub에 푸시
new_dataset.push_to_hub("stt_data")

해당 코드는 byeolcardi라는 유저(작성자)의 stt_data에 저장하는 코드입니다. 하나씩 push 하는 것 보셨으니 이제 여러 개를 한꺼번에 넣는 코드를 말씀드리겠습니다.

data폴더 안에 1부터 100까지의 wav파일(1.wav~100.wav) 그리고 해당하는 텍스트 파일이 각각 1.txt~100.txt의 형태로 저장되어 있다 했을 때 다음과 같은 코드로 작성해 주시면 됩니다.

 

from datasets import load_dataset
import torchaudio
import os

# 불러올 데이터셋의 이름과 버전
dataset_name = "byeolcardi/stt_data"

# 데이터 폴더 경로
data_folder = "data"

# 기존 데이터셋 불러오기
dataset = load_dataset(dataset_name)

# 새로운 데이터를 추가하여 데이터셋을 확장
new_data = {"audio": [], "text": []}

# 1부터 100까지 순회하며 데이터 추가
for i in range(1, 101):
    audio_file_path = os.path.join(data_folder, f"{i}.wav")
    text_file_path = os.path.join(data_folder, f"{i}.txt")

    # 음성 파일을 텐서로 변환
    waveform, sample_rate = torchaudio.load(audio_file_path)

    # 텍스트 라벨 읽어오기
    with open(text_file_path, "r") as text_file:
        text_label = text_file.read().strip()

    new_data["audio"].append(waveform)
    new_data["text"].append(text_label)

# 새로운 데이터를 추가하여 데이터셋을 확장
new_dataset = dataset.add(new_data)

# 데이터셋을 Hugging Face Hub에 푸시
new_dataset.push_to_hub("byeolcardi/stt_data")

관련글 더보기