22 lines
1.2 KiB
Markdown
22 lines
1.2 KiB
Markdown
# whisper_ggml 2.6.0 사본 (JJ_MKVMaker 패치)
|
|
|
|
원본: https://pub.dev/packages/whisper_ggml 2.6.0
|
|
|
|
## 고친 문제
|
|
Windows 에서 음성인식이 끝나는 순간 앱이 종료됨 (예외 코드 0xc0000374, 힙 손상).
|
|
|
|
- 네이티브(main.cpp)는 응답 문자열을 C 런타임 `malloc` 으로 할당
|
|
- Dart 는 `package:ffi` 의 `malloc.free` 로 해제 → Windows 에서는 `CoTaskMemFree` 이므로 다른 힙
|
|
|
|
## 수정
|
|
- android/src/whisper/main.cpp: `free_response()` 내보내기 추가 (같은 C 런타임의 `free` 호출)
|
|
- lib/src/whisper.dart, lib/src/whisper_live.dart: `malloc.free(res)` → `Whisper.freeNativeResponse()`
|
|
- example 폴더 제거
|
|
|
|
원본 패키지에서 고쳐지면 pubspec.yaml 을 다시 `whisper_ggml: ^버전` 으로 바꾸면 된다.
|
|
|
|
## Android: FFmpeg 하나만 넣기
|
|
- pubspec.yaml · lib/src/whisper_audio_convert.dart: `ffmpeg_kit_flutter_new_min` → `ffmpeg_kit_flutter_new_min_gpl`
|
|
(앱이 MKV 만들기에 쓰는 것과 같은 것. 두 가지가 함께 들어가면 같은 이름의 Java 클래스 · 네이티브 라이브러리가 겹쳐 빌드 · 실행이 안 됨)
|
|
- android/build.gradle: compileSdk 34 → 36 (ffmpeg-kit min-gpl 이 35 이상을 요구)
|