파이썬으로 오디오 파일 전사하는 방법
목차
- 프로젝트 소개
- 파이썬에서 음성 인식하는 방법
- 어셈블리 인공지능 API 토큰 생성
- 파일 업로드
- 음성 전사 시작
- 자동 인식 폴링
- 전사 결과 저장
- 결론
- 자주 묻는 질문
- 참고 자료
프로젝트 소개
이 프로젝트에서는 파이썬을 사용하여 음성 인식을 수행하는 방법을 배우게 됩니다. 이 방법은 매우 간단합니다. 우리가 할 일은 이전 프로젝트에서 녹음한 오디오 파일을 가져와서 텍스트 파일로 변환하는 것입니다. 이 프로젝트는 어떻게 작동하는지를 보여줍니다. 이전 프로젝트에서 녹음한 오디오 파일은 다음과 같습니다.
hi i'm patrick this is a test123
스크립트를 실행하면 우리는 이 오디오 파일의 텍스트 전사를 얻습니다.
hi i'm patrick this is a test one two three
이제 이를 파이썬에서 구현하는 방법을 알아보겠습니다. 이 프로젝트에는 주로 두 가지가 필요합니다. 어셈블리 인공지능 API를 사용하여 음성 인식을 수행하는 데 사용되는 "requests" 라이브러리입니다. 먼저 어셈블리 인공지능에서 API 토큰을 가져와야 합니다. 어셈블리 인공지능 웹사이트에 가입한 후 API 키를 복사하면 됩니다. 그런 다음 이 API 키를 사용하여 파일을 업로드하고 음성을 전사하는 방법을 설정할 수 있습니다. 이제 다음 단계에 대해 알아보겠습니다.
파이썬에서 음성 인식하는 방법
이 프로젝트의 메인 파일에는 다음과 같은 코드가 포함되어야 합니다.
import requests
def upload(file_name):
# 파일 업로드 코드 작성
def transcribe(audio_url):
# 음성 전사 코드 작성
def polling(job_id):
# 폴링 코드 작성
def save_transcript(data, file_name):
# 전사 결과 저장 코드 작성
def main(file_name):
audio_url = upload(file_name)
transcribe_url = transcribe(audio_url)
job_id = transcribe_url['id']
data = polling(job_id)
save_transcript(data, file_name)
if __name__ == '__main__':
file_name = input("파일 이름을 입력하세요: ")
main(file_name)
이 코드를 사용하여 오디오 파일을 업로드하고 음성 전사 결과를 텍스트 파일로 저장할 수 있습니다. 다음 몇 단계에서는 이 코드를 구체적으로 작성하는 방법을 알아보겠습니다.
어셈블리 인공지능 API 토큰 생성
어셈블리 인공지능 API를 사용하기 위해 API 토큰을 생성해야 합니다. 어셈블리 인공지능 웹사이트에 가입한 후 무료 계정을 생성하고 로그인하면 API 키를 얻을 수 있습니다. 그런 다음 이 API 키를 코드에 붙여넣어야 합니다.
API_KEY = '여기에_당신의_API_키를_입력하세요'
이렇게 API 키를 설정한 후에는 해당 키로 언제든지 인증할 수 있습니다.
파일 업로드
파일을 어셈블리 인공지능 API에 업로드하는 것은 매우 간단합니다. 다음과 같은 코드를 작성하면 됩니다.
def upload(file_name):
url = 'https://api.assemblyai.com/v2/upload'
headers = {
'authorization': API_KEY
}
with open(file_name, 'rb') as file:
response = requests.post(url, headers=headers, data=file)
audio_url = response.json()['upload_url']
return audio_url
이 코드는 주어진 파일을 업로드하고 업로드된 오디오의 URL을 반환합니다. 그런 다음 이 URL을 다음 단계에서 사용할 수 있습니다.
음성 전사 시작
음성 전사를 시작하기 위해 다음 코드를 작성해야 합니다.
def transcribe(audio_url):
url = 'https://api.assemblyai.com/v2/transcript'
headers = {
'authorization': API_KEY,
'content-type': 'application/json'
}
json_data = {
'audio_url': audio_url
}
response = requests.post(url, headers=headers, json=json_data)
return response.json()
이 코드는 오디오 URL을 사용하여 음성 전사 작업을 시작합니다. 응답에서 전사 작업 ID를 반환하므로 다음 단계에서 사용할 수 있습니다.
자동 인식 폴링
음성 전사 작업의 상태를 확인하기 위해 폴링을 사용해야 합니다. 다음과 같은 코드를 작성하면 됩니다.
import time
def polling(job_id):
while True:
url = f'https://api.assemblyai.com/v2/transcript/{job_id}'
headers = {
'authorization': API_KEY
}
response = requests.get(url, headers=headers)
data = response.json()
status = data['status']
if status == 'completed':
return data
elif status == 'error':
return None
else:
print("아직 전사 작업이 완료되지 않았습니다. 30초 후 다시 확인합니다.")
time.sleep(30)
이 코드는 주어진 전사 작업 ID를 사용하여 음성 전사 작업의 상태를 확인합니다. 전사가 완료되거나 에러가 발생하면 해당 결과를 반환합니다. 그렇지 않은 경우 30초 후 다시 확인합니다.
전사 결과 저장
마지막으로 전사 결과를 텍스트 파일로 저장해야 합니다. 다음 코드를 사용하면 됩니다.
def save_transcript(data, file_name):
transcript = data['text']
output_file_name = file_name + '.txt'
with open(output_file_name, 'w') as file:
file.write(transcript)
print("전사가 저장되었습니다.")
# 함수 호출 예시
save_transcript(data, 'output.12')
이 코드는 전사 결과를 받아와서 출력 파일 이름을 생성하고, 해당 파일에 전사를 저장합니다. 저장이 완료되면 메시지를 출력합니다.
결론
이렇게 하면 파이썬을 사용하여 음성 인식을 수행하는 프로젝트를 완성할 수 있습니다. 파일을 어셈블리 인공지능 API에 업로드하고 음성을 전사하며 전사 결과를 텍스트 파일로 저장할 수 있습니다. 이를 통해 음성 데이터를 효과적으로 활용할 수 있습니다. 다음 프로젝트에서는 이 코드를 활용하여 더 많은 기능을 구현해 볼 수 있습니다.
자주 묻는 질문
Q: 어셈블리 인공지능 API 토큰을 어디에서 얻을 수 있나요?
A: 어셈블리 인공지능 웹사이트에 가입하고 무료 계정을 생성하면 API 토큰을 얻을 수 있습니다.
Q: 음성 전사 작업이 오래 걸리는 이유는 무엇인가요?
A: 음성 전사 작업은 오디오의 길이에 따라 시간이 다소 소요될 수 있습니다. 긴 녹음 파일일수록 전사하는 데 더 많은 시간이 걸릴 수 있습니다.
Q: 전사 결과를 다른 형식으로 저장할 수 있나요?
A: 네, 가능합니다. 코드를 수정하여 원하는 형식으로 결과를 저장할 수 있습니다.
참고 자료