본문으로 건너뛰기

문제 해결

언어 모델 스테이징 문제

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

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

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

  1. DirectoriesToAlwaysCook (레이블: Additional Asset Directories to Cook) 내부에 /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 파일에 다음 두 줄을 추가하세요:
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;

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