기술 블로그

[개발일기] 음성 AI에서 ‘다시 시도’는 생각보다 어려운 일입니다

다글로 팀 · 2026년 10월 8일

[개발일기] 음성 AI에서 ‘다시 시도’는 생각보다 어려운 일입니다

음성 AI의 품질을 이야기할 때 가장 먼저 떠오르는 것은 인식 정확도입니다. 어떤 단어를 틀렸는지, 사람 이름과 전문용어를 얼마나 잘 알아듣는지부터 확인하게 됩니다.

다글로처럼 대화를 기록하는 제품에서는 당연히 중요한 기준입니다. 그런데 녹음 파일이 정확한 텍스트로 돌아오기까지의 과정을 생각하면, 모델의 정확도만으로 설명되지 않는 질문도 생깁니다.

“처리는 끝났는데 사용자가 결과를 받지 못했다면?”

“응답이 늦어서 같은 요청을 다시 보냈다면?”

오늘의 개발 메모는 이 질문에서 시작합니다. AI에게 코드를 부탁할 때는 짧은 한 줄로 끝나는 요구사항입니다.

“실패하면 다시 시도하게 해 줘.”

하지만 음성을 처리하는 시스템에서는 무엇을 실패로 보고, 어디부터 다시 시작할지 먼저 정해야 합니다.

응답이 없다는 것과 작업이 없다는 것은 다릅니다

녹음 파일을 보내고 결과를 기다리는 상황을 생각해 보겠습니다.

사용자 화면에는 응답이 오지 않았습니다. 그렇다고 서버에서 아무 일도 일어나지 않았다고 단정할 수는 없습니다. 요청이 도착하지 않았을 수도 있지만, 접수된 뒤 응답을 전달하는 과정에서 문제가 생겼을 수도 있습니다.

뒤에서는 이미 음성 인식이 진행되고 있을지도 모릅니다.

이때 같은 작업을 새로 만들면 중복 처리가 생길 수 있습니다. 반대로 무조건 기다리게 하면, 실제로는 접수되지 않은 요청이 끝나기를 기다리는 상황이 됩니다.

단순히 오류를 잡아 한 번 더 실행하는 코드만으로는 두 경우를 구분하지 못합니다. 먼저 필요한 것은 작업이 어떤 상태에 있는지 확인할 수 있는 기준입니다.

사용자는 내부 상태를 모두 알 필요가 없습니다. 다만 처리 중인지, 다시 요청해야 하는지, 결과가 준비됐는지는 분명하게 알 수 있어야 합니다. 그 구분을 만드는 일도 음성 AI 제품을 설계하는 과정에 포함됩니다.

같은 요청을 두 번 받으면, 일을 두 번 해야 할까

재시도를 생각하다 보면 ‘멱등성(Idempotency)’이라는 조금 딱딱한 단어를 만나게 됩니다. 같은 요청을 여러 번 보내도 한 번 보낸 것과 같은 효과가 나도록 만드는 성질입니다.

녹음 파일 처리에서도 생각해 볼 만한 기준입니다. 연결이 불안정해서 요청을 다시 보냈다고 동일한 작업이 계속 새로 만들어지는 것은 사용자가 기대하는 동작과 거리가 있습니다.

하지만 같은 파일이라고 해서 언제나 같은 요청인 것도 아닙니다. 사용자가 다른 설정으로 다시 처리하고 싶을 수도 있습니다.

그래서 중복을 구분하는 기준에는 의도가 들어가야 합니다. 이전 요청의 재시도인지, 조건을 바꾼 새로운 요청인지 판단할 수 있어야 합니다.

요청마다 식별자를 붙이는 방법도 있고, 입력과 설정을 기준으로 같은 작업인지 비교하는 방법도 있습니다. 각각 장단점이 있습니다. 파일이 같다는 이유만으로 막으면 필요한 재처리까지 막을 수 있고, 요청을 모두 별개로 보면 불필요한 중복을 놓칠 수 있습니다.

코드보다 먼저 정해야 하는 것은 “사용자가 지금 무엇을 다시 하려는가”입니다.

음성을 알아들은 뒤에도 일이 남습니다

음성 인식 모델이 전사 결과를 만들었다면 작업은 끝난 것일까요?

제품을 사용하는 사람의 관점에서는 아직 아닐 수 있습니다. 결과가 저장되어야 하고, 어느 녹음에 대한 결과인지 연결되어야 하며, 사용자가 다시 열어 확인할 수 있어야 합니다.

음성을 텍스트로 변환하는 단계와 그 결과를 보관하는 단계의 실패는 성격이 다릅니다. 저장을 다시 시도하면 되는 상황에서 음성 인식을 처음부터 반복하면 처리 시간과 자원을 불필요하게 사용할 수 있습니다.

물론 앞선 결과가 안전하게 보관되어 있는지도 확인해야 합니다. 재사용할 결과가 없는 상황에서 다음 단계만 재시도할 수는 없습니다.

이런 차이를 구분하려면 각 단계가 무엇을 책임지는지 정해야 합니다. 입력을 받는 일, 음성을 처리하는 일, 결과를 남기는 일, 사용자에게 전달하는 일이 서로 어떤 상태를 주고받는지 설명할 수 있어야 합니다.

다글로를 쓰는 사람에게 필요한 것은 모델이 한 번 성공했다는 사실보다, 자신의 대화가 다시 확인할 수 있는 기록으로 돌아오는 경험입니다. 음성 AI의 품질을 볼 때 그 끝까지 생각해야 하는 이유입니다.

AI가 코드를 빨리 만들어 줄수록 경계를 먼저 적기

『Building Microservices』의 저자 Sam Newman은 최근 인터뷰에서 AI 개발과 함께 쌓일 수 있는 ‘인지적 부채’를 이야기했습니다. 코드는 늘어나는데 그 코드가 어떻게 동작하는지 이해하는 일이 뒤로 밀리는 문제입니다.

음성 처리의 재시도 로직도 좋은 예입니다. AI는 오류 처리와 재시도 코드를 빠르게 만들어 줄 수 있습니다. 하지만 응답이 없는 작업을 다시 생성해도 되는지, 이전 결과를 재사용할 수 있는지는 제품과 시스템의 조건에 달려 있습니다.

그 조건을 설명하지 않으면 코드가 돌아가더라도 의도한 동작인지 판단하기 어렵습니다.

그래서 구현을 부탁하기 전에 먼저 네 가지를 적어 보고 싶습니다.

  • 이 단계는 무엇을 입력받고, 무엇을 완료해야 하는가.
  • 중간에 실패하면 어떤 상태와 결과가 남는가.
  • 같은 요청이 다시 들어오면 무엇을 확인하는가.
  • 다음 단계가 실패했을 때 어디부터 다시 시작할 수 있는가.

이 답이 있으면 AI가 만든 코드를 검토하는 기준도 생깁니다. 예외 처리가 많아 보이는지보다, 실제로 필요한 상황을 구분하는지 볼 수 있습니다.

정확도와 함께 설계해야 하는 신뢰

재시도와 작업 상태는 인식 정확도만큼 눈에 잘 띄는 주제는 아닙니다. 모든 것이 정상일 때는 사용자가 그 차이를 느끼기 어려울 수도 있습니다.

하지만 문제가 생기는 순간에는 중요해집니다. 녹음이 사라진 것인지, 아직 처리 중인지, 다시 보내도 되는지 모르는 상태에서는 결과를 기다리는 일 자체가 불안해집니다.

업무에 쓰이는 음성 AI를 설계할 때는 말을 얼마나 정확하게 알아듣는지와 함께, 그 기록이 어떤 과정을 거쳐 사용자에게 돌아오는지도 살펴야 합니다.

다글로라는 브랜드가 쌓아 가야 할 신뢰도 여기에 있다고 생각합니다. 대화를 정확하게 기록하는 것, 그리고 그 기록을 필요한 순간에 다시 확인할 수 있게 하는 것. 모델의 성능과 제품의 동작을 함께 바라볼 때 더 구체적인 품질 기준이 생깁니다.

오늘의 메모 끝에는 이렇게 적어 두기로 했습니다.

“다시 시도하기 전에, 이미 어디까지 끝났는지부터 알자.”

짧은 문장이지만, 음성 AI를 실제로 사용할 수 있는 제품으로 만드는 데 필요한 질문이 꽤 많이 들어 있습니다.

← 블로그로 돌아가기

대화가 일이 되는 곳, daglo.

지금 바로 무료로 시작해보세요