엔트리강의 23강 인공지능(AI)을 활용한 음성인식 역사 퀴즈 만들기 (코딩, 게임코딩, 취미코딩) #엔트리 게임만들기
엔트리 음성인식 역사 퀴즈 만들기
1. 프로그램 미리보기
- 시작: "지금부터 역사 퀴즈를 시작하겠습니다"라고 말하며 시작을 알림.
- 퀴즈 시작: "시작하려면 퀴즈 시작 버튼을 클릭하세요"라고 안내.
- 문제 제시: 조선 후기 역사 관련 질문이 화면에 나타나고, 선생님이 질문을 읽어줌.
- 음성 인식: 사용자가 정답을 말하면 음성으로 인식하여 저장.
- 정답/오답 판별: 사용자의 음성 답변과 정답을 비교하여 정답/오답 판별.
- 점수 계산: 정답 시 점수 획득.
- 퀴즈 종료: 모든 문제가 끝나면 최종 점수와 함께 퀴즈 종료 안내.
주의: 음성 인식은 완벽하지 않아서 발음이 좋아도 가끔 잘못 인식될 수 있다는 점을 알아두자!
2. 프로그램 만들기
2.1. 오브젝트 준비
- 배경: '교실' 배경 선택.
- 선생님: 원하는 선생님 오브젝트 선택 후 화면 왼쪽 아래에 배치.
- 퀴즈 시작 버튼:
- 글상자 추가.
- 글자색 유지, 배경색 노란색으로 변경.
- 오른쪽 아래에 배치.
- 문제 창:
- 글상자 추가.
- '문제'라고 입력.
- '여러 줄 쓰기'로 변경 후 적용.
- 화면에 맞게 크기 조절.
2.2. 신호와 변수 만들기
- 신호:
- '퀴즈 시작' 신호 추가.
- '판단하기' 신호 추가.
- 변수:
- '문제 번호' 변수 추가.
- '점수' 변수 추가.
- '음성 인식' 변수 추가 (사용자 답변 저장용).
- '정답 체크' 변수 추가.
- 변수들을 적당히 배치.
2.3. 테이블에 문제와 정답 저장
- 테이블 추가: '테이블 추가하기' 클릭.
- 새로 만들기: '새로 만들기' 클릭.
- 이동하기: '이동하기' 클릭.
- 테이블 이름: '퀴즈'로 변경.
- 열 이름 변경:
- 첫 번째 열 더블 클릭 후 '문제'로 변경.
- '문제' 열에서 마우스 오른쪽 버튼 클릭 후 '열 추가하기' 클릭하여 '정답' 열 추가.
- 행 추가: '1' 행에서 마우스 오른쪽 버튼 클릭 후 '아래 행 추가하기'를 4번 눌러 총 5개의 행 만들기.
- 문제와 정답 입력: 아래 표와 같이 문제와 정답 입력.
| 문제 | 정답 |
| :------------------------------------------------------------------- | :----- |
| 조선 후기 실생활에 필요한 것을 연구하는 학문을 무엇이라고 하는가 | 실학 |
| 조선 후기의 김정호가 만든 우리나라 지도의 이름은 무엇인가 | 대동여지도 |
| 조선 후기 사람들의 생활 모습을 담고 있는 그림은 무엇인가 | 풍속화 |
| 경세유표 목민심서를 쓴 조선 후기 대표적인 실학자는 누구인가 | 정약용 |
| 최제우가 민간신앙과 유교 불교 천주교의 장점을 모아 만든 종교의 이름은 무엇인가 | 동학 |
- 저장: 입력 후 '저장하기' 버튼 클릭.
2.4. 인공지능 블록 불러오기 및 함수 만들기
- AI 블록 불러오기: '인공지능' 메뉴에서 'AI 블록 불러오기' 클릭.
- 오디오 감지, 읽어주기 선택 후 '추가하기' 클릭.
- '말하기' 함수 만들기:
- '함수' 메뉴에서 '함수 만들기' 클릭.
- 함수 이름: '말하기'.
- 문자 숫자값 블록을 함수 이름 오른쪽에 붙여서 '읽어줄 글자'를 받도록 설정.
- 생김새: '안녕을 말하기' 블록 가져와 '안녕' 자리에 '읽어줄 글자' 블록 넣기.
- 인공지능: '읽어주고 기다리기' 블록 가져와 '읽어줄 글자' 블록 넣기.
- 생김새: '말하기 지우기' 블록을 마지막에 붙여 말풍선 없애기.
- '확인' 버튼 클릭.
2.5. 선생님 오브젝트 코드 작성
-
시작하기:
- '시작하기 버튼을 클릭했을 때' 블록 가져오기.
- '말하기' 함수 블록 가져와 "지금부터 역사 퀴즈를 시작하겠습니다" 입력.
- '말하기' 함수 블록 복사하여 "시작하려면 퀴즈 시작 버튼을 클릭하세요" 입력.
-
퀴즈 시작 신호 받았을 때:
- '퀴즈 시작' 신호를 받았을 때' 블록 가져오기.
- 변수 초기화:
- '자료'에서 '변수값 정하기' 블록 가져와 '문제 번호'를 '1'로 설정.
- '점수'를 '0'으로 설정.
- '음성 인식' 변수의 값을 비워두기 (백스페이스 사용).
- '퀴즈 시작' 신호 보내기.
-
퀴즈 시작 신호 받았을 때 (문제 창 오브젝트):
- '퀴즈 시작' 신호를 받았을 때' 블록 가져오기.
- 문제 표시:
- '글상자' 메뉴에서 '글쓰기' 블록 가져오기.
- '데이터 분석'에서 '테이블의 값' 블록 가져와 '문제 번호' 변수 값을 넣고 '문제' 열에서 값을 불러오도록 설정.
- 문제 읽어주기:
- '인공지능'에서 '읽어주고 기다리기' 블록 가져와 위에서 가져온 '테이블의 값' 블록 그대로 복사하여 넣기.
-
음성 인식 및 정답 판별:
- 음성 인식 반복:
- '흐름'에서 '참이 될 때까지 반복하기' 블록 가져오기.
- 인공지능: '음성을 문자로 바꾼 값' 블록 가져오기.
- 변수값 정하기: '음성 인식' 변수에 '음성을 문자로 바꾼 값' 넣기.
- 흐름: '2초 기다리기' 블록 넣기.
- 판단: '계산'에서 '글자 수' 블록 가져와 '음성 인식' 변수 넣고, '1보다 크다' 조건으로 설정.
- 정답/오답 판별:
- '흐름'에서 '만일 참이라면 아니면' 블록 가져오기.
- 판단: '10은 10이다' 블록 가져와 왼쪽에는 '음성 인식' 변수, 오른쪽에는 '테이블의 값' 블록 (문제 번호, 정답 열) 넣기.
- 정답일 경우:
- '자료'에서 '변수값 정하기' 블록 가져와 '정답 체크'를 '정답'으로 설정.
- '말하기' 함수 블록 가져와 "정답입니다" 입력.
- '자료'에서 '점수에 10만큼 더하기' 블록 가져와 '점수'에 10 더하기.
- 오답일 경우:
- '자료'에서 '변수값 정하기' 블록 가져와 '정답 체크'를 '오답'으로 설정.
- '말하기' 함수 블록 가져와 "오답입니다" 입력.
- 음성 인식 변수 초기화: '자료'에서 '변수값 정하기' 블록 가져와 '음성 인식' 변수 값을 비워두기.
- 판단하기 신호 보내기: '판단하기' 신호 보내기.
- 음성 인식 반복:
-
판단하기 신호 받았을 때 (정답/오답 안내 및 다음 문제 진행):
- '판단하기' 신호를 받았을 때' 블록 가져오기.
- 정답/오답 안내:
- '흐름'에서 '만일 참이라면 아니면' 블록 가져오기.
- 판단: '10은 10이다' 블록 가져와 왼쪽에는 '정답 체크' 변수, 오른쪽에는 '정답' 입력.
- 정답일 경우: '말하기' 함수 블록 가져와 "정답입니다" 입력.
- 오답일 경우: '말하기' 함수 블록 가져와 "오답입니다" 입력.
- 마지막 문제 판별:
- '흐름'에서 '만일 참이라면 아니면' 블록 가져오기.
- 판단: '계산'에서 '테이블의 행 개수' 블록 가져와 '퀴즈' 테이블 선택 후, '문제 번호' 변수와 비교하여 '같다' 조건으로 설정.
- 마지막 문제일 경우:
- '말하기' 함수 블록 가져와 "퀴즈가 모두 끝났습니다." 입력.
- 점수 안내:
- '계산'에서 '10 + 10' 블록 두 개 가져와 합치기.
- "당신의 점수는 " + '점수' 변수 + "점입니다." 문장 만들기.
- 만든 문장을 '말하기' 함수 블록에 넣기.
- '말하기' 함수 블록 가져와 "퀴즈를 다시 시작하려면 퀴즈 시작 버튼을 누르세요." 입력.
- 마지막 문제가 아닐 경우:
- '자료'에서 '변수값에 1씩 더하기' 블록 가져와 '문제 번호'에 1 더하기.
- '퀴즈 시작' 신호 보내기.
2.6. 저장 습관!
- 인공지능 블록을 사용할 때는 오류를 방지하기 위해 '저장하기' 버튼을 자주 누르는 것이 좋음.
3. 최종 확인
- 프로그램을 실행하여 모든 기능이 정상적으로 작동하는지 확인.
- 음성 인식이 잘 되는지, 정답/오답 판별이 정확한지, 점수 계산이 맞는지 등을 테스트.
이대로 따라 하면 재미있는 음성 인식 역사 퀴즈를 만들 수 있을 거야!