diff --git a/beginner_source/audio_io_tutorial.py b/beginner_source/audio_io_tutorial.py
index 9fa23bbad..59179729b 100644
--- a/beginner_source/audio_io_tutorial.py
+++ b/beginner_source/audio_io_tutorial.py
@@ -1,13 +1,13 @@
# -*- coding: utf-8 -*-
"""
-Audio I/O
+오디오 I/O
=========
-``torchaudio`` integrates ``libsox`` and provides a rich set of audio I/O.
+``torchaudio`` 는 ``libsox`` 를 통합하고 풍부한 오디오 I/O 를 제공합니다.
"""
-# When running this tutorial in Google Colab, install the required packages
-# with the following.
+# 이번 튜토리얼을 구글 코랩(Google Colab)에서 실행할 때,
+# 필요한 패키지들을 아래와 같이 설치해주세요.
# !pip install torchaudio boto3
import torch
@@ -17,16 +17,16 @@
print(torchaudio.__version__)
######################################################################
-# Preparing data and utility functions (skip this section)
+# 데이터 및 유용한 함수 준비하기 (이번 섹션 생략)
# --------------------------------------------------------
#
-#@title Prepare data and utility functions. {display-mode: "form"}
+#@title 데이터 및 유용한 함수 준비하기 {display-mode: "form"}
#@markdown
-#@markdown You do not need to look into this cell.
-#@markdown Just execute once and you are good to go.
+#@markdown 이 부분을 자세히 보실 필요는 없습니다.
+#@markdown 한번만 실행하면 충분합니다.
#@markdown
-#@markdown In this tutorial, we will use a speech data from [VOiCES dataset](https://iqtlabs.github.io/voices/), which is licensed under Creative Commos BY 4.0.
+#@markdown 이번 튜토리얼에서, [VOiCES dataset](https://iqtlabs.github.io/voices/) 의 음성 데이터를 사용할 것이고, 이 데이터는 Creative Commos BY 4.0 에 의해 라이센스가 부여됩니다.
import io
@@ -166,54 +166,53 @@ def inspect_file(path):
print(f" - {torchaudio.info(path)}")
######################################################################
-# Quering audio metadata
-# ----------------------
+# 오디오 메타데이터 쿼리하기
+# --------------------------
#
-# Function ``torchaudio.info`` fetches audio metadata. You can provide
-# a path-like object or file-like object.
+# 함수 ``torchaudio.info`` 는 오디오 메타데이터를 가져옵니다.
+# 경로 혹은 파일 형식의 객체를 파라미터로 넣을 수 있습니다.
#
metadata = torchaudio.info(SAMPLE_WAV_PATH)
print(metadata)
######################################################################
-# Where
-#
-# - ``sample_rate`` is the sampling rate of the audio
-# - ``num_channels`` is the number of channels
-# - ``num_frames`` is the number of frames per channel
-# - ``bits_per_sample`` is bit depth
-# - ``encoding`` is the sample coding format
-#
-# ``encoding`` can take on one of the following values:
-#
-# - ``"PCM_S"``: Signed integer linear PCM
-# - ``"PCM_U"``: Unsigned integer linear PCM
-# - ``"PCM_F"``: Floating point linear PCM
-# - ``"FLAC"``: Flac, `Free Lossless Audio
-# Codec `__
-# - ``"ULAW"``: Mu-law,
+# 위 결과에서
+#
+# - ``sample_rate`` 는 오디오의 샘플링 비율입니다.
+# - ``num_channels`` 는 채널의 개수입니다.
+# - ``num_frames`` 는 채널별 프레임의 개수입니다.
+# - ``bits_per_sample`` 은 샘플당 비트 수(bit depth)입니다.
+# - ``encoding`` 는 샘플 코딩 형식입니다.
+#
+# ``encoding`` 은 다음 값들 중 하나가 될 수 있습니다:
+#
+# - ``"PCM_S"``: 부호가 있는 정수 선형 PCM
+# - ``"PCM_U"``: 부호가 없는 정수 선형 PCM
+# - ``"PCM_F"``: 부동소수점 선형 PCM
+# - ``"FLAC"``: Flac, `무료 무손실 오디오 코덱(Free Lossless Audio
+# Codec) `__
+# - ``"ULAW"``: 뮤 법칙(Mu-law),
# [`wikipedia `__]
-# - ``"ALAW"``: A-law
+# - ``"ALAW"``: A 법칙(A-law)
# [`wikipedia `__]
-# - ``"MP3"`` : MP3, MPEG-1 Audio Layer III
+# - ``"MP3"`` : MP3, MPEG-1 오디오 레이어 III
# - ``"VORBIS"``: OGG Vorbis [`xiph.org `__]
-# - ``"AMR_NB"``: Adaptive Multi-Rate
+# - ``"AMR_NB"``: 적응형 다중 속도(Adaptive Multi-Rate)
# [`wikipedia `__]
-# - ``"AMR_WB"``: Adaptive Multi-Rate Wideband
+# - ``"AMR_WB"``: 적응형 다중 속도 광대역(Adaptive Multi-Rate Wideband)
# [`wikipedia `__]
# - ``"OPUS"``: Opus [`opus-codec.org `__]
# - ``"GSM"``: GSM-FR
# [`wikipedia `__]
-# - ``"UNKNOWN"`` None of above
+# - ``"UNKNOWN"``: 위에 없음
#
######################################################################
-# **Note**
+# **참고**
#
-# - ``bits_per_sample`` can be ``0`` for formats with compression and/or
-# variable bit rate (such as MP3).
-# - ``num_frames`` can be ``0`` for GSM-FR format.
+# - 압축 및/또는 가변 비트 전송률 형식(예: MP3)의 경우 ``bits_per_sample`` 은 ``0`` 일 수 있습니다.
+# - GSM-FR 형식의 경우 ``num_frames`` 는 ``0`` 일 수 있습니다.
#
metadata = torchaudio.info(SAMPLE_MP3_PATH)
@@ -224,10 +223,10 @@ def inspect_file(path):
######################################################################
-# Querying file-like object
+# 파일 형식의 객체 쿼리하기
# ~~~~~~~~~~~~~~~~~~~~~~~~~
#
-# ``info`` works on file-like objects.
+# ``info`` 는 파일 형식의 객체에서 동작합니다.
#
print("Source:", SAMPLE_WAV_URL)
@@ -236,15 +235,14 @@ def inspect_file(path):
print(metadata)
######################################################################
-# **Note** When passing a file-like object, ``info`` does not read
-# all of the underlying data; rather, it reads only a portion
-# of the data from the beginning.
-# Therefore, for a given audio format, it may not be able to retrieve the
-# correct metadata, including the format itself.
-# The following example illustrates this.
+# **참고** 파일 형식의 객체를 넘길 때, ``info`` 는 모든 기본 데이터를 읽는
+# 것이 아니라 처음부터 데이터의 일부만 읽습니다.
+# 따라서, 주어진 오디오 형식의 경우, 형식 자체를 포함하여,
+# 올바른 메타데이터를 검색하지 못할 수 있습니다.
+# 다음 예시에서 이를 보여줍니다.
#
-# - Use argument ``format`` to specify the audio format of the input.
-# - The returned metadata has ``num_frames = 0``
+# - ``format`` 인자를 사용하여 입력의 오디오 형식을 지정합니다.
+# - 반환된 메타데이터에 ``num_frames = 0`` 가 있습니다.
#
print("Source:", SAMPLE_MP3_URL)
@@ -255,21 +253,20 @@ def inspect_file(path):
print(metadata)
######################################################################
-# Loading audio data into Tensor
+# 오디오 데이터를 텐서로 불러오기
# ------------------------------
#
-# To load audio data, you can use ``torchaudio.load``.
+# 오디오 데이터를 불러오기 위해, ``torchaudio.load`` 를 사용할 수 있습니다.
#
-# This function accepts a path-like object or file-like object as input.
+# 이 함수는 경로 혹은 파일 형식의 객체를 입력으로 받아들입니다.
#
-# The returned value is a tuple of waveform (``Tensor``) and sample rate
-# (``int``).
+# 반환되는 값은 파형 (``Tensor``) 과 샘플링 비율 (``int``) 의 튜플입니다.
#
-# By default, the resulting tensor object has ``dtype=torch.float32`` and
-# its value range is normalized within ``[-1.0, 1.0]``.
+# 기본적으로, 결과 텐서 객체는 ``dtype=torch.float32`` 이고,
+# 값의 범위는 ``[-1.0, 1.0]`` 내에서 정규화됩니다.
#
-# For the list of supported format, please refer to `the torchaudio
-# documentation `__.
+# 지원되는 형식의 목록은 `torchaudio 문서 `__
+# 를 참고하세요.
#
waveform, sample_rate = torchaudio.load(SAMPLE_WAV_SPEECH_PATH)
@@ -281,27 +278,27 @@ def inspect_file(path):
######################################################################
-# Loading from file-like object
+# 파일 형식의 객체 로드하기
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
-# ``torchaudio``\ ’s I/O functions now support file-like objects. This
-# allows for fetching and decoding audio data from locations
-# within and beyond the local file system.
-# The following examples illustrate this.
+# ``torchaudio`` 의 I/O 함수는 이제 파일 형식의 객체를 지원합니다.
+# 이를 통해 로컬 파일 시스템 내부 및 외부 위치에서 오디오 데이터를
+# 가져오고 디코딩할 수 있습니다.
+# 다음 예제는 이를 보여줍니다.
#
-# Load audio data as HTTP request
+# HTTP 요청으로 오디오 데이터 로드
with requests.get(SAMPLE_WAV_SPEECH_URL, stream=True) as response:
waveform, sample_rate = torchaudio.load(response.raw)
plot_specgram(waveform, sample_rate, title="HTTP datasource")
-# Load audio from tar file
+# 파일에서 오디오 로드
with tarfile.open(SAMPLE_TAR_PATH, mode='r') as tarfile_:
fileobj = tarfile_.extractfile(SAMPLE_TAR_ITEM)
waveform, sample_rate = torchaudio.load(fileobj)
plot_specgram(waveform, sample_rate, title="TAR file")
-# Load audio from S3
+# S3에서 오디오 로드
client = boto3.client('s3', config=Config(signature_version=UNSIGNED))
response = client.get_object(Bucket=S3_BUCKET, Key=S3_KEY)
waveform, sample_rate = torchaudio.load(response['Body'])
@@ -309,31 +306,29 @@ def inspect_file(path):
######################################################################
-# Tips on slicing
-# ~~~~~~~~~~~~~~~
+# 슬라이싱(slicing)을 위한 팁
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~
#
-# Providing ``num_frames`` and ``frame_offset`` arguments restricts
-# decoding to the corresponding segment of the input.
+# ``num_frames`` 와 ``frame_offset`` 인자를 지정하면
+# 디코딩이 입력의 해당 세그먼트로 제한됩니다.
#
-# The same result can be achieved using vanilla Tensor slicing,
-# (i.e. ``waveform[:, frame_offset:frame_offset+num_frames]``). However,
-# providing ``num_frames`` and ``frame_offset`` arguments is more
-# efficient.
+# 평범한 텐서 슬라이싱(즉, ``waveform[:, frame_offset:frame_offset+num_frames]``)
+# 을 사용하여 동일한 결과를 얻을 수 있습니다.
+# 하지만 ``num_frames`` 와 ``frame_offset`` 인자를 지정하는 것이 더 효율적입니다.
#
-# This is because the function will end data acquisition and decoding
-# once it finishes decoding the requested frames. This is advantageous
-# when the audio data are transferred via network as the data transfer will
-# stop as soon as the necessary amount of data is fetched.
+# 이는 요청된 프레임의 디코딩이 완료되면 함수가 데이터 수집 및 디코딩을
+# 종료하기 때문입니다. 필요한 양의 데이터를 가져오는 즉시 데이터 전송이 중지되기 때문에,
+# 오디오 데이터가 네트워크를 통해 전송될 때 유리합니다.
#
-# The following example illustrates this.
+# 다음 예제에서 이를 보여줍니다.
#
-# Illustration of two different decoding methods.
-# The first one will fetch all the data and decode them, while
-# the second one will stop fetching data once it completes decoding.
-# The resulting waveforms are identical.
+# 두 가지 다른 디코딩 방법입니다.
+# 첫번째 방법은 모든 데이터를 가져온 후 디코딩합니다.
+# 두번째 방법은 디코딩이 완료되면 데이터를 가져오는 것을 중지합니다.
+# 결과로 나오는 파형은 동일합니다.
-frame_offset, num_frames = 16000, 16000 # Fetch and decode the 1 - 2 seconds
+frame_offset, num_frames = 16000, 16000 # 1-2 초 가져오기 및 디코딩
print("Fetching all the data...")
with requests.get(SAMPLE_WAV_SPEECH_URL, stream=True) as response:
@@ -353,42 +348,40 @@ def inspect_file(path):
######################################################################
-# Saving audio to file
-# --------------------
+# 오디오를 파일에 저장하기
+# ------------------------
#
-# To save audio data in formats interpretable by common applications,
-# you can use ``torchaudio.save``.
+# 일반적인 응용 프로그램에서 해석 가능한 형식으로 오디오 데이터를 저장하려면
+# ``torchaudio.save`` 를 사용할 수 있습니다.
#
-# This function accepts a path-like object or file-like object.
+# 이 함수는 경로 혹은 파일 형식의 객체를 입력으로 받아들입니다.
#
-# When passing a file-like object, you also need to provide argument ``format``
-# so that the function knows which format it should use. In the
-# case of a path-like object, the function will infer the format from
-# the extension. If you are saving to a file without an extension, you need
-# to provide argument ``format``.
+# 파일 형식의 객체를 전달할 때, 함수에서 사용할 형식을 알 수 있도록
+# ``format`` 인자를 넣어줘야 합니다. 경로 형식의 객체의 경우,
+# 함수에서 그 경로의 확장자로부터 형식을 추론하게 됩니다.
+# 확장자가 없는 파일에 저장하는 경우에는 ``format`` 인자를 넣어줘야 합니다.
#
-# When saving WAV-formatted data, the default encoding for ``float32`` Tensor
-# is 32-bit floating-point PCM. You can provide arguments ``encoding`` and
-# ``bits_per_sample`` to change this behavior. For example, to save data
-# in 16-bit signed integer PCM, you can do the following.
+# WAV 형식의 데이터를 저장할 때, ``float32`` 텐서의 기본 인코딩은 32비트
+# 부동소수점 PCM 입니다. ``encoding`` 과 ``bits_per_sample`` 인자를 넣어서
+# 이 동작을 변경할 수 있습니다. 예를 들어, 데이터를 16비트 부호 있는 정수 PCM으로
+# 저장하려면, 다음과 같이 작업합니다.
#
-# **Note** Saving data in encodings with lower bit depth reduces the
-# resulting file size but also precision.
+# **참고** 비트 깊이가 낮은 인코딩으로 데이터를 저장하면 결과 파일 크기가
+# 줄어들 뿐만 아니라 정확도도 떨어집니다.
#
waveform, sample_rate = get_sample()
print_stats(waveform, sample_rate=sample_rate)
-# Save without any encoding option.
-# The function will pick up the encoding which
-# the provided data fit
+# 인코딩 옵션 없이 저장하기
+# 이 함수는 제공된 데이터에 적합한 인코딩을 선택합니다.
path = "save_example_default.wav"
torchaudio.save(path, waveform, sample_rate)
inspect_file(path)
-# Save as 16-bit signed integer Linear PCM
-# The resulting file occupies half the storage but loses precision
+# 16비트 부호 있는 정수 선형 PCM으로 저장
+# 결과 파일이 스토리지의 절반을 차지하지만 정확도가 떨어집니다.
path = "save_example_PCM_S16.wav"
torchaudio.save(
path, waveform, sample_rate,
@@ -397,7 +390,7 @@ def inspect_file(path):
######################################################################
-# ``torchaudio.save`` can also handle other formats. To name a few:
+# ``torchaudio.save`` 는 다른 형식도 처리할 수 있습니다. 몇 가지 예를 들면:
#
waveform, sample_rate = get_sample(resample=8000)
@@ -419,18 +412,17 @@ def inspect_file(path):
######################################################################
-# Saving to file-like object
+# 파일 형식의 객체에 저장하기
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
#
-# Similar to the other I/O functions, you can save audio to file-like
-# objects. When saving to a file-like object, argument ``format`` is
-# required.
+# 다른 I/O 기능과 마찬가지로, 오디오를 파일 형식의 객체로 저장할 수 있습니다.
+# 파일 형식의 객체로 저장할 때는 ``format`` 인자가 필요합니다.
#
waveform, sample_rate = get_sample()
-# Saving to bytes buffer
+# 바이트 버퍼에 저장하기
buffer_ = io.BytesIO()
torchaudio.save(buffer_, waveform, sample_rate, format="wav")