아마추어 chatgpt 활용기

음성인식 문제 해결 시도2 - <Return> 이벤트 바인딩

promptoperator 2023. 5. 13. 09:26
반응형

2번째 시도

 

음성인식테스트를 삽입한 코드에서는 음성인식이 한번 작동했다. 그런데 음성인식테스트 코드를 제거한 코드는 음성인식이 작동하지 않는다. 결국엔 위에 작성한 코드에서 음성인식 관련 변수나 코드에 문제가 있는것 같다는 결론이 나온다.

 

그래서 chat GPT에게 물어보았다.

*답변*

*마이크가 제대로 작동하고 음성 인식 테스트 코드가 음성을 인식할 수 있다면 메인 프로그램에서 음성 인식을 호출하는 코드에 문제가 있을 수 있습니다.

 

한 가지 가능성은 recognize_alphabet 기능을 트리거하는 <Return> 키에 대한 이벤트 바인딩이 제대로 작동하지 않는다는 것입니다. recognize_alphabet 함수 내에서 일부 디버그 문을 인쇄하여 호출되고 있는지 확인할 수 있습니다.

 

또 다른 가능성은 프로그램이 recognize_alphabet 함수 내의 while 루프에 갇혀 더 이상의 코드 실행을 방해할 수 있다는 것입니다. while 루프를 제거하고 음성 인식이 그것 없이 작동하는지 확인할 수 있습니다.*

 

마지막으로 레이블 업데이트 또는 게임 로직과 같은 코드의 다른 부분과 충돌이 있을 수 있습니다. 코드의 일부를 주석 처리하여 문제를 격리하고 가능한 원인의 범위를 좁힐 수 있습니다.

 

4가지 문제가능성을 제기하였는데, 마이크 작동문제는 확실히 잘 작동되었는 것을 확인하였기 때문에 배제했다.

다음 가능성으로는 recognize_alphabet 기능을 트리거하는 <Return> 키에 대한 이벤트 바인딩이 제대로 작동하지 않는 문제이다. 전문프로그래머가 아니라서 무슨 말인지 몰라 GPT에게 알아듣기 쉽게 설명해달라고 했다.

 

*답변*

*코드에서 <Return>은 키보드에서 Enter 키를 나타냅니다. 이벤트 바인딩은 특정 키 또는 키 조합이 눌렸을 때 호출할 함수를 지정하는 것을 의미합니다. 이 코드에서는 root.bind("<Return>", recognize_alphabet) 코드를 사용하여 Enter 키가 눌렸을 때 recognize_alphabet 함수를 실행하도록 지정하고 있습니다.*

 

! Return이란게 키보드에서 Enter 키를 눌러야 한다는 말이었다니, 바보천지도 이런 바보천지가 없다. 즉 음성인식을 하게 하려면 Enter키를 누르라는 얘기였다.

Enter키를 누르고 자신있게 P라고 외쳤더니!!!

!!

 

 

p가 인식되었다. 그다음 또 Enter를 누르고 T라고 했더니, t가 인식되었다.

그리고 또 Enter를 누르고 말을 했지만 Listening에서 멈춤현상이 발생했다.

어쨌든 영어 인식을 하고 GUI에 맞는지 틀렸는지 구현한 것에 50%는 성공한 것 같다.

 

그럼 다음 단계에서 발생하는 문제인 멈춤현상 로딩지연시간에 대해 해결방법을 찾아보았다.

 

답변

음성인식을 사용하는 프로그램은 대개 인식 결과를 받기까지 시간이 걸리기 때문에, 조금 느리거나 중간에 멈추는 현상은 일반적입니다. 하지만 몇 가지 개선 방법이 있습니다.

 

1.처리되는 오디오 데이터의 양 제한: 현재 구현에서 코드는 게임이 끝날 때까지 음성 입력을 계속 듣습니다. 이는 처리되는 오디오 데이터의 양이 시간이 지남에 따라 증가하여 로딩 시간이 길어진다는 것을 의미합니다. 이 문제를 해결하는 한 가지 방법은 특정 시간 또는 특정 시도 횟수 후에 청취 프로세스를 중지하여 처리되는 오디오 데이터의 양을 제한하는 것입니다.

 

2.로컬에서 음성 텍스트 변환 구현: 현재 구현에서는 Google의 클라우드 기반 음성 인식 서비스를 사용하므로 속도가 느릴 수 있고 로딩 시간이 길어질 수 있습니다. 로컬 음성-텍스트 라이브러리를 구현하면 네트워크 대기 시간을 줄여 성능을 향상할 수 있습니다.

 

3.코드 최적화: 코드에는 성능을 향상시키기 위해 최적화할 수 있는 영역이 있을 수 있습니다. 예를 들어 while 루프를 사용하여 음성 입력을 지속적으로 수신하는 대신 사용자가 특정 키를 누를 때만 음성 인식 기능이 트리거되는 이벤트 기반 접근 방식을 사용하도록 코드를 리팩토링할 수 있습니다.

 

4.보다 효율적인 프로그래밍 언어 사용: 애플리케이션의 복잡성과 데이터 세트의 크기에 따라 C 또는 C++와 같은 보다 효율적인 프로그래밍 언어를 사용하면 성능이 크게 향상될 수 있습니다.

 

이러한 전략 중 하나 이상을 구현하면 음성 인식 행맨 게임의 성능을 향상시킬 수 있습니다.

 

역시 똑똑한 GPT가 문제해결 방법을 몇가지 제시해주었다.

그럼 난 한 개씩 적용해서 수정해달라고 부탁하면서 검증에 들어가야겠다.