앱인토스미니앱에서webkitSpeechRecognition(WebSpeechAPI) 이 동작하지 않는 문제

이 글의 성격은 무엇인가요?

질문 / 문제 해결

내용을 설명해주세요

안녕하세요.앱인토스미니앱에서webkitSpeechRecognition(WebSpeechAPI)
이 동작하지 않는 문제로 문의드립니다.

환경

  • 디바이스: iPhone (iOS)

    • 토스 앱 최신 버전 / 콘솔에 .ait 업로드후테스트
      -프레임워크: @apps-in-toss/web-framework v2.5 (WebView 미니앱)

    현상

    실제 토스 앱 WebView 에서 다음 코드를 실행하면 start() 직후 즉시
    error: service-not-allowed 가 발생합니다.

    const SR = window.webkitSpeechRecognition;
    const recog = new SR();
    recog.lang = ‘ko-KR’;
    recog.continuous = true;
    recog.interimResults = true;
    recog.addEventListener(‘error’, (e) => console.log(e.error));
    recog.start(); // → 즉시 ‘service-not-allowed’ 발생

    진단 로그

    화면에 SR 이벤트 stage 를 노출하도록 디버그 빌드를 만들어 확인한 결과,
    다음 순서로 종료됩니다.

    SR=ok → start()ok → error:service-not-allowed → end

    audiostart / soundstart / speechstart / result 이벤트는 한 번도 발생하지
    않습니다. 즉 SR 객체는 노출되지만 음성 인식 서비스 호출 자체가 차단된
    상태로 보입니다.

    기존 답변과의 차이

    이전 커뮤니티 글에서 “WebView 환경은 일반 Web API 사용 제한 없음,
    navigator.mediaDevices.getUserMedia 로 마이크 사용 가능” 이라는 답변을
    보았습니다. getUserMedia (마이크 권한 / 녹음) 는 정상 동작합니다.
    저희가 막혀 있는 것은 그 위 레이어의 webkitSpeechRecognition
    (녹음된 음성을 텍스트로 변환) 입니다. 둘은 별개의 Web API 입니다.

    원인 추정

    iOS WKWebView 의 SpeechRecognition 은 native 앱 (이 경우 토스 앱) 의
    Info.plist 에 NSSpeechRecognitionUsageDescription 키가 선언되어 있어야
    작동하는 것으로 알고 있습니다. 토스 앱이 이 권한을 선언하지 않은 상태일
    가능성이 높아 보입니다.

    확인 요청

    1. iOS 토스 앱 WebView 에서 webkitSpeechRecognition (Web Speech API) 가
      공식적으로 지원되는지 여부
    2. 미지원이라면 Android 토스 앱에서는 동작하는지 (플랫폼별 차이 여부)
    3. 가이드 문서 권한 페이지에 “대부분의 표준 Web API” 라고 표기되어 있는데,
      미지원되는 Web API 목록을 별도로 제공해주실 수 있는지
    4. 토스 SDK 차원에서 STT (음성→텍스트) 기능을 제공할 계획이 있는지,
      또는 미니앱 측에서 권장하는 대체 방안 (예: 서버 STT 우회 등)

    D-5 마감인 챌린지 출품작 (음성 일기 미니앱) 의 핵심 채점 로직에 관련된
    이슈라 빠른 답변 부탁드립니다. 감사합니다.

안녕하세요 :slight_smile:
확인해보겠습니다.

만약 네이티브 앱 배포가 필요할 경우, 차주 버전에 포함될 수 있는 점 참고 부탁드려요 :man_bowing: