Lesson 8, Topic 3
In Progress

활동: 나만의 Alexa 만들기

Lesson Progress
0% Complete

이 활동에서는 음성 명령에 따라 응답하고 노래를 재생하는 자체 버전의 Alexa를 만들 것입니다. PictoBlox 파이썬 환경을 사용하여 이것을 구축할 것입니다.

재생할 노래

코딩하자

  1. Pictoblox에서 새 파일을 열고 Python Coding 환경을 선택합니다.
  2. 시간 라이브러리를 가져옵니다.
    sprite = Sprite('Tobi')
    
    import time
  3. PictoBlox 환경에서 다운로드한 두 곡( MarioSpiderman )을 업로드하려면 다음을 수행하십시오.
    1. Sounds 탭으로 이동합니다.
    2. Choose a Sound 버튼 위에 마우스 포인터를 놓고 Upload Sound를 클릭합니다.
    3. 여기에 두 소리를 하나씩 업로드하십시오.
  4. Tobi 스프라이트가 이미 시작되었음을 알 수 있습니다(기본값). 또한 다음 두 클래스를 시작하겠습니다.
    1. 음성 인식: 이 클래스는 우리의 음성을 인식하고 그에 따라 작업을 수행하는 기능을 가지고 있습니다.
    2. 텍스트 음성 변환: 이 클래스에는 코드에 입력한 텍스트(문자열)를 음성으로 변환하는 기능이 있습니다.
      sprite = Sprite('Tobi')
      
      import time             
      
      sr = SpeechRecognition()
      ts = TexttoSpeech()
  5. 이제 음성 인식을 수행하기 위해, 즉 음성을 분석하기 위해 SpeechRecognition 클래스의 analysisspeech() 함수를 사용합니다.
    이 함수는 두 개의 매개변수를 사용합니다.

    1. 4 : 음성이 녹음되는 시간(초)
    2. “en-US” : 말할 언어
      sr.analysespeech(4, "en-US")
  6. 위에서 분석한 음성 결과를 SpeechRecognition 클래스의 speechresult() 함수를 사용하여 command 변수에 저장합니다. 이 함수는 음성을 문자열 형태로 녹음하고 저장합니다.
    command = sr.speechresult()
  7. python의 lower() 함수를 사용하여 변수 command에 저장된 결과(문자열)를 소문자로 변환합니다.
    command = command.lower()
  8. 녹음된 음성에서 ‘마리오’라는 단어가 사용되었는지 확인하고 싶습니다. 이를 위해 다음을 수행합니다.
    1. if 조건문을 사용합니다.
    2. python 키워드 ‘in’ 을 사용하여 command 변수 내에 저장된 문자열에 단어/문자열 ‘mario’가 있는지 확인합니다.
      if 'mario' in command:
  9. 음성에서 ‘mario’라는 단어가 발견되면, 즉 condition이 True를 반환 하는 경우 PictoBlox가 ‘Playing Mario Song’이라고 말하도록 합니다. 이를 위해 TexttoSpeech 클래스의 speak() 함수를 사용합니다.
    또한 Tobi 스프라이트가 Mario 노래를 재생하기를 원합니다. 이를 위해 Sprite 클래스의 playuntildone() 함수를 사용합니다.

    if 'mario' in command:
      ts.speak('Playing Mario Song')
      sprite.playuntildone("Mario")
  10. 마찬가지로 음성에서 ‘spiderman’이라는 단어가 감지되면 elif 조건을 사용하여 Spiderman 노래를 재생할 수 있습니다.
    elif 'spiderman' in command:
      ts.speak('Playing Spiderman Song')
      sprite.playuntildone("Spiderman")
  11. 음성에서 ‘mario’ 또는 ‘spiderman’ 단어가 감지되지 않으면 PictoBlox가 ‘죄송합니다. 명령을 이해할 수 없습니다.’라고 말할 수 있습니다.
    else:
      ts.speak('Sorry I am unable to understand the command')
  12. 마지막으로 클래스의 stopallsounds() 함수를 사용하여 재생 중인 모든 노래를 중지합니다. 10초 정도 기다린 후 진행하겠습니다.
    time.sleep(10)
    sprite.stopallsounds()
  13. 전체 코드는 다음과 같습니다.
    sprite = Sprite('Tobi')
    
    import time
    
    sr = SpeechRecognition()
    ts = TexttoSpeech()
    
    
    sr.analysespeech(4, "en-US")
    
    command = sr.speechresult()
    command = command.lower()
    
    if 'mario' in command:
      ts.speak('Playing Mario Song')
      sprite.playuntildone("Mario")
    elif 'spiderman' in command:
      ts.speak('Playing Spiderman Song')
      sprite.playuntildone("Spiderman")
    else:
      ts.speak('Sorry I am unable to understand the command')
      
    time.sleep(10)
    sprite.stopallsounds()
      
    
  14. Run 버튼을 눌러 스크립트를 테스트합니다.

과제

다음 수업으로 넘어가기 전에 작은 과제가 기다리고 있습니다!

이 활동에서 작성한 PictoBlox 프로그램을 웹 사이트에 업로드해야 합니다. 과정을 마친 후 수료증을 받으려면 과제를 제출해야 합니다.

과제를 업로드하려면 아래 단계를 따르세요.

  1. Browse를 클릭합니다.
  2. 저장된 프로젝트 파일(.sb3)을 검색하여 선택하고 Open을 클릭합니다.
  3. Upload를 클릭하여 과제를 제출합니다.
evive Alert
허용되는 파일 유형은 PictoBlox 프로그램에서 생성된 SB3 파일입니다. 허용되는 최대 파일 크기는 5 MB입니다.

행운을 빕니다!