컴퓨터/Python 26

Python (16) - TTS와 STT를 구현하자 (pyttsx3, Speech Recogition)

군대에서 기가지니라는 인공지능 스피커를 처음 사용하였습니다. 최근에 인공지능 스피커에 대하여 관심을 가지기 시작하였는데 여기에서 핵심기술이 텍스트와 음성 간의 관계라고 생각합니다. 두 관계를 해결해야지 사람과 기계가 소통할 수 있기 때문입니다. 그래서 이번에는 사람과 기계가 소통하는 방법 TTS와 STT에 대하여 알아보겠습니다. STT (Speech to Text) "기가지니?"라고 우리가 말하면 기가지니는 "네?"라고 반응합니다. 어떻게 기가지니라고 말하는 것을 컴퓨터가 알아들었을까요? 이것은 STT라는 기술을 이용하여 음성을 분석하여 텍스트로 바꾸어 주기 때문입니다. 발음마다 매질이 달라 일일이 분석하여 해당 소리를 낼 수도 있지만 해당 과정은 몹시 어렵습니다. 그래서 파이썬에 패키지를 이용하려고 합..

컴퓨터/Python 2023.05.10

Python (15) - 파이썬 가상환경을 만들자 (venv)

한 프로그래밍 언어로 여러 가지 작업을 하다 보면 패키지의 충돌 등 다양한 문제가 생길 수 있습니다. 특히 파이썬 같은 경우에는 A라는 프로젝트를 돌리기에 패키지가 많은 오류를 일으킵니다. 이런 방법을 해결하기 위한 한 가지의 수단으로 가상환경을 이용해보도록 하겠습니다. 가상환경이 필요한 이유 위에서 말한 것과 같이 여러 가지 작업을 하다 보면 패키지의 충돌이 일어날 수 있습니다. 프로젝트마다 필요한 라이브러리나 패키지의 버전이 다르기 때문에 해당 사건이 일어날 수 있습니다. 이것을 의존성 분리라고 합니다. 가상환경을 통하여 의존성 충돌을 피하고, 각 프로젝트를 독립적으로 관리할 수 있습니다. 이를 통하여 효율적으로 프로젝트를 관리할 수 있으며 이는 프로그램 제작 후 배포 시에 용이합니다. 위의 두 사진..

컴퓨터/Python 2023.04.15

Python (14) - Tic-Tac-Toe게임을 만들어보자 (pygame)

파이썬에는 pygame이라는 멀티미디어 표현을 위한 라이브러리가 있습니다. 해당 라이브러리를 통해 다양한 게임들을 제작할 수 있습니다. 해당 라이브러리 소개를 위한 첫 프로젝트로 간단하게 제작이 가능한 틱택토를 구현해보았습니다. 완성된 소스 코드가 필요하신 분은 아래 링크 클릭하여 소스 코드로 바로 이동하면 됩니다. 소스 코드 Tic-Tac-Toe (틱택토) 틱택토는 서양 놀이 중 하나로 3x3 보드에서 가로, 세로, 대각선 중 한 줄을 만들면 승리하는 게임입니다. 간단하게 삼목입니다. 플레이 방법은 다음과 같습니다. 가로 두 줄 세로 두 줄을 그립니다. 1P와 2P는 3x3 공간 안에 각각 O, X를 번갈아 가면서 그립니다. 가로, 세로, 대각선 중 한 줄이 완성되는 경우 만든 사람이 승리합니다. 게임..

컴퓨터/Python 2023.02.14

Python (13) - 파이썬으로 QR코드를 만들어보자 (qrcode)

QR코드는 정보를 오프라인으로 담을 수 있는 한 가지 방법입니다. 해당 방법을 이용하여 더 쉽고 빠르게 정보를 공유할 수 있습니다. 파이썬에서도 QR코드를 생성할 수 있는 모듈이 있는데 이번에는 해당 모듈에 대해 알아보겠습니다. QR코드는 무엇인가? QR코드는 Quick Responce의 약자로 1994년 일본 'Denso Wave'에서 개발되었습니다. 2차원으로 데이터를 나열한 정보표시 방법으로 흰색 바탕에 검정색 점으로 구성되어 있습니다. 해당 기술을 응용하여 URL, 텍스트 등 데이터를 담거나, 회용으로 제공하는 링크를 이용하여 결제기능을 구현할 수 있습니다. QR코드는 QR코드 리더 및 스캐너를 통해 읽을 수 있습니다. QR코드의 특징 어떤 방향에서 측정해도 인식할 수 있다. 문자 기준 4096자..

컴퓨터/Python 2023.02.09

Python (12) - 재귀함수를 이용하여 팩토리얼, 하노이탑을 풀어보자

재귀함수를 이용하여 알고리즘을 구성하는 경우 많은 문제를 해결할 수 있습니다. 재귀함수와 어떻게 사용해야 하는지 팁을 공유하도록 하겠습니다. 재귀함수 어떠한 함수에서 자신을 다시 호출하여 작업하는 작업방식입니다. 위의 이미지는 방송을 호출할 때 무한화면으로 나와 있는데 이것처럼 이론상 무한으로 재귀함수를 사용할 수 있습니다. 하지만 재귀함수의 공간을 스택 메모리에 담기 때문에 너무 많은 재귀함수를 사용하는 경우 스택 오버플로우로 에러가 날 수 있습니다. 여담으로 재귀함수를 사용하지 않아도 반복문으로 재귀함수처럼 문제를 해결할 수 있습니다. 그럼에도 불과하고 재귀함수를 사용하는 경우는 다음과 같습니다. 재귀적인 경우가 더 자연스러운 알고리즘인 경우에 사용한다 스택으로 메모리를 이용하기 때문에 변수 사용이 ..

컴퓨터/Python 2023.01.14

Python (11) - 스택(Stack)과 큐(Queue) 구현하기

우리가 자료구조를 공부함으로 복잡한 프로그램들을 편하게 설계할 수 있습니다. 기본적인 자료구조들을 넘어 중요한 두 가지 자료구조를 소개합니다. 바로 스택과 큐입니다. 시작하기 전에 개념 단어 자료구조에서 쓰는 단어 중 FIFO, FILO, LIFO, LILO이라는 단어가 있습니다. FIFO (First In First Out) : 먼저 데이터가 먼저 빠져나가는 구조 (큐) FILO (First In Last Out) : 먼저 데이터가 가장 마지막에 빠져나가는 구조 (스택) LIFO (Last In First Out) : 마지막 데이터가 가장 먼저 빠져나가는 구조 (스택) LILO (Last In Last Out) : 마지막 데이터가 마지막 나오는 구조 (큐) 스택 (Stack) 스택은 LIFO의 개념을 ..

컴퓨터/Python 2023.01.09

Python (10) - pytesseract를 이용하여 이미지 안에 있는 글자를 뽑아보자

가끔 우리가 웹사이트의 이미지를 텍스트로 바꿔야 할 때가 있습니다. 이번에는 Tesseract 엔진을 이용하여 이미지를 텍스트로 바꿔보는 방법에 대하여 알아보겠습니다. Tesseract OCR 우선 OCR이란 Optical Character Recognition의 약자로 직역하자면 광학 문자 인식입니다. 사람 혹은 기계가 종이에 작성한 문자를 이미지화하여 기계가 읽을 수 있는 문자로 변환합니다. Tesseract엔진은 광학 문자를 인식할 수 있는 엔진으로 파이썬을 이용하여 해당 엔진을 조작하고, 문자 인식을 하려고 합니다. 아래는 깃허브에 나와있는 문서로 참조하는 것을 추천합니다. https://github.com/madmaze/pytesseract GitHub - madmaze/pytesseract: ..

컴퓨터/Python 2023.01.07

Python (9) - BeautifulSoup를 이용하여 디시인사이드에 웹 크롤링을 해보자

카타르 월드컵이 끝나고 커뮤니티를 실시간으로 볼 수 있는 웹 크롤러가 있으면 어떨까 생각해 보았습니다. F5를 주기적으로 눌러보는 방법도 있으나 크롤링으로 화면이 보이게 하였습니다. 그래서 먼저는 데이터를 크롤링하는 방법에 대하여 알아보겠습니다. 크롤링 먼저 크롤링은 웹상에 존재하는 정보를 수집해 오는 작업입니다. 데이터 수집 방법에는 크게 3가지 방법이 있습니다. HTML 페이지를 가져와 필요한 데이터만 수집하는 방법 OpenAPI를 호출하여 받은 데이터 중 필요한 데이터만 수집하는 방법 프로그램을 이용하여 브라우저를 조작하여 필요한 데이터를 수집하는 방법 여기서 1번 방법을 사용하여 HTML 페이지를 가져오는 방법을 진행하려고 합니다. 디시인사이드 크롤링을 하는 과정 ※ 크롤링 같은 경우 사용 방법에..

컴퓨터/Python 2023.01.03

Python (8) - Base64 방식을 이용한 이미지 인코딩, 디코딩

졸업연구를 하던중 Base64 방식을 이용한 다양한 인코딩과 디코딩을 접하는 기회가 있었습니다. 해당 글에는 Base64란 무엇인가 그리고 파이썬을 이용한 인코딩, 디코딩을 올려보도록 하겠습니다. Base64 Base64코드는 64개의 문자로만 이루어진 문자 코드입니다. 우리가 일반적으로 사용하는 ASCII 코드는 128가지의 문자로 이루어져 있습니다. 따라서 매칭하여 문자열로 변환할 수 있습니다. 여기서 ASCII 코드를 사용하지 않은 이유는 문자만 이루어져 있지 않기 때문입니다. 문자열로만 전송하는 경우에는 상관이 없으나 인코딩하여 전송하는 경우에 오류가 날 수 있습니다. 안정적으로 인코딩을할 때 사용하기 위하여 해당 문자 코드가 사용됩니다. 안정적으로 변환할 수 있으나 단점 또한 있습니다. 위의 그..

컴퓨터/Python 2022.12.15

Python (7) - 튜플(tuple)을 알아보자 {vs 리스트(list)}

예전 게시글에 적은 적이 있었는데 파이썬은 자료형 중심의 언어라고 생각합니다. 이러한 자료형이 많기 때문에 개발하기 편한 자료형이라고 생각합니다. 이번에는 튜플에 대하여 알아보겠습니다. 튜플 vs 리스트 튜플이라는 자료형은 리스트하고 흡사합니다. 그래서 두 자료형을 비교하고 설명하면 쉽게 이해할 수 있습니다. 우선 두 자료형의 공통점은 둘다 데이터를 컨테이너 공간에 저장한다는 점입니다. 차이점은 아래와 같습니다. 튜플은 ()기호를 사용하고 리스트는 []기호를 사용한다. 튜플은 값을 수정할 수 없지만 리스트는 값을 수정할 수 있다. 튜플이 리스트보다 필요한 메모리가 적고, 속도가 빠르다. 두 가지 자료형의 차이는 수정의 유무가 가장 중요합니다. 튜플의 사용방법 튜플 사용 예제 EX1) 튜플 선언하기 #EX..

컴퓨터/Python 2022.04.08