본문으로 건너뛰기

문제 해결

언어 모델 스테이징 문제

대부분의 문제는 언어 모델 스테이징과 관련되어 있으며, 패키지된 빌드에서 문제를 일으킬 수 있습니다. 특히 다음과 같은 로그를 접할 수 있습니다:

LogRuntimeSpeechRecognizer: Error: Language model loading failed: Failed to load the language model asset '/RuntimeSpeechRecognizer/LanguageModels/LanguageModel.LanguageModel'

이 문제를 해결하려면 프로젝트 설정으로 이동한 후 프로젝트 -> 패키징 섹션으로 이동하세요. 아래로 스크롤하여 고급 카테고리를 펼친 다음, 다음을 확인하세요:

  1. DirectoriesToAlwaysCook (추가 애셋 디렉터리로 쿡으로 표시됨) 내부에 /RuntimeSpeechRecognizer/LanguageModels 항목이 있는지 확인하세요. 이는 편집기 시간 동안 플러그인에 의해 자동으로 수행되지만, 일부 사용자는 수동으로 수행해야 한다고 보고했으므로 꼭 확인하시기 바랍니다. 이는 언어 모델 애셋이 패키징된 빌드에 항상 스테이징되도록 보장하는 데 필요합니다.

쿡할 추가 애셋 디렉터리

  1. bCookMapsOnlyfalse로 설정되어 있는지 확인하세요. true로 설정되어 있으면 이전 속성을 무시하게 되며, 언어 모델 애셋이 제대로 스테이징되지 않을 가능성이 있습니다. 이것 또한 플러그인에 의해 자동으로 수행되지만, 확실하게 하기 위해 이 변수를 수동으로 확인하세요.

쿡할 추가 애셋 디렉터리

엔진의 패키징 동작에 영향을 미칠 수 있는 다른 속성이 있을 수 있으며, 이는 조사되는 대로 나중에 이 페이지에 추가될 수 있습니다.

Android 및 iOS 충돌

Android와 iOS의 일부 경우에는 런타임 중(예: TestFlight 테스트 중) 충돌이 발생할 수 있습니다. 이는 기본 whisper.cpp 라이브러리의 메모리 할당 요구 사항이 이러한 플랫폼에서 Unreal Engine의 기본 할당자와 충돌하기 때문에 발생합니다. 다른 플랫폼에서는 FMalloc이 기본적으로 ANSI 할당자를 사용하므로, 이 문제는 Android와 iOS에 특화되어 있습니다.

이를 해결하려면 프로젝트의 Target.cs 파일에서 ANSI 할당자를 강제로 사용하도록 설정해야 합니다:

Unreal Engine 5.5 및 이전 버전의 경우:

  • 프로젝트는 사전 컴파일된 바이너리가 아닌 소스 빌드 엔진을 사용해야 합니다
  • Target.cs 파일에 다음 줄을 추가하세요:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");

언리얼 엔진 5.6 이상의 경우:

  • 소스 빌드와 사전 컴파일된 엔진 빌드 모두에서 작동합니다.
  • Target.cs 파일에 다음 줄을 추가하세요:
StaticAllocator = StaticAllocatorType.Ansi;

이것은 Unreal Engine이 Android와 iOS에서 ANSI 할당자를 사용하도록 강제하여, whisper.cpp가 사용하는 할당자와 일치시킵니다.