feat(voice): add iOS VAD runtime support

This commit is contained in:
Edison Jwa
2026-05-21 20:51:45 +09:00
parent 171baf6e41
commit 6af4ecab0f
73 changed files with 11529 additions and 1249 deletions
@@ -169,6 +169,18 @@ abstract class AppL10n {
/// **'Diagnostics'**
String get diagnosticsAction;
/// No description provided for @diagnosticsSaveAction.
///
/// In en, this message translates to:
/// **'Save export'**
String get diagnosticsSaveAction;
/// No description provided for @diagnosticsSaved.
///
/// In en, this message translates to:
/// **'Diagnostic export saved to {path}'**
String diagnosticsSaved(String path);
/// No description provided for @aboutAction.
///
/// In en, this message translates to:
@@ -721,6 +733,72 @@ abstract class AppL10n {
/// **'Chanora needs permission to access the microphone. On macOS, go to System Settings → Privacy & Security → Microphone and enable Chanora.'**
String get microphonePermissionBody;
/// No description provided for @microphonePermissionRequiredForVoice.
///
/// In en, this message translates to:
/// **'Microphone permission is required for voice transmission.'**
String get microphonePermissionRequiredForVoice;
/// No description provided for @permissionGrantAction.
///
/// In en, this message translates to:
/// **'Grant'**
String get permissionGrantAction;
/// No description provided for @audioRouteSystemDefault.
///
/// In en, this message translates to:
/// **'System default'**
String get audioRouteSystemDefault;
/// No description provided for @audioRouteEarpiece.
///
/// In en, this message translates to:
/// **'Earpiece'**
String get audioRouteEarpiece;
/// No description provided for @audioRouteUsbHeadset.
///
/// In en, this message translates to:
/// **'USB headset'**
String get audioRouteUsbHeadset;
/// No description provided for @audioRouteOtherDevice.
///
/// In en, this message translates to:
/// **'Other device'**
String get audioRouteOtherDevice;
/// No description provided for @audioRouteRefreshDevices.
///
/// In en, this message translates to:
/// **'Refresh audio devices'**
String get audioRouteRefreshDevices;
/// No description provided for @audioRouteCannotSelect.
///
/// In en, this message translates to:
/// **'This output cannot be selected.'**
String get audioRouteCannotSelect;
/// No description provided for @audioRouteChangeFailed.
///
/// In en, this message translates to:
/// **'Could not change audio output.'**
String get audioRouteChangeFailed;
/// No description provided for @iosAudioInterrupted.
///
/// In en, this message translates to:
/// **'Audio interrupted by system (phone call)'**
String get iosAudioInterrupted;
/// No description provided for @iosAudioResuming.
///
/// In en, this message translates to:
/// **'Audio resuming'**
String get iosAudioResuming;
/// No description provided for @permissionDenied.
///
/// In en, this message translates to:
@@ -46,6 +46,14 @@ class AppL10nEn extends AppL10n {
@override
String get diagnosticsAction => 'Diagnostics';
@override
String get diagnosticsSaveAction => 'Save export';
@override
String diagnosticsSaved(String path) {
return 'Diagnostic export saved to $path';
}
@override
String get aboutAction => 'About';
@@ -360,6 +368,40 @@ class AppL10nEn extends AppL10n {
String get microphonePermissionBody =>
'Chanora needs permission to access the microphone. On macOS, go to System Settings → Privacy & Security → Microphone and enable Chanora.';
@override
String get microphonePermissionRequiredForVoice =>
'Microphone permission is required for voice transmission.';
@override
String get permissionGrantAction => 'Grant';
@override
String get audioRouteSystemDefault => 'System default';
@override
String get audioRouteEarpiece => 'Earpiece';
@override
String get audioRouteUsbHeadset => 'USB headset';
@override
String get audioRouteOtherDevice => 'Other device';
@override
String get audioRouteRefreshDevices => 'Refresh audio devices';
@override
String get audioRouteCannotSelect => 'This output cannot be selected.';
@override
String get audioRouteChangeFailed => 'Could not change audio output.';
@override
String get iosAudioInterrupted => 'Audio interrupted by system (phone call)';
@override
String get iosAudioResuming => 'Audio resuming';
@override
String get permissionDenied => 'Permission Denied';
}
@@ -44,6 +44,14 @@ class AppL10nZh extends AppL10n {
@override
String get diagnosticsAction => '诊断信息';
@override
String get diagnosticsSaveAction => '保存导出';
@override
String diagnosticsSaved(String path) {
return '诊断导出已保存到 $path';
}
@override
String get aboutAction => '关于';
@@ -352,6 +360,39 @@ class AppL10nZh extends AppL10n {
String get microphonePermissionBody =>
'Chanora 需要麦克风访问权限。请前往系统设置 → 隐私与安全性 → 麦克风,启用 Chanora。';
@override
String get microphonePermissionRequiredForVoice => '语音发送需要麦克风权限。';
@override
String get permissionGrantAction => '授权';
@override
String get audioRouteSystemDefault => '系统默认';
@override
String get audioRouteEarpiece => '听筒';
@override
String get audioRouteUsbHeadset => 'USB 耳机';
@override
String get audioRouteOtherDevice => '其他设备';
@override
String get audioRouteRefreshDevices => '刷新音频设备';
@override
String get audioRouteCannotSelect => '无法选择此输出设备。';
@override
String get audioRouteChangeFailed => '无法切换音频输出。';
@override
String get iosAudioInterrupted => '系统已中断音频(电话通话)';
@override
String get iosAudioResuming => '音频正在恢复';
@override
String get permissionDenied => '权限被拒绝';
}