feat(learn): voice mode, a conversation spoken as Claude's "Let's talk" (ADR 0021, D68)
Beside the field's microphone, a button opens voice mode over the whole screen: a glow rising from below, a big microphone, and +, who answers, the speaker and End in one row. It listens with the device's recogniser, asks what was heard in one kept conversation, reads the answer aloud with the device's speech (flutter_tts, its Markdown left out) and listens again. On Linux there is none, as there is no microphone; where nothing reads aloud, answers are shown as text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
7be31dcbfc
commit
c984678c5b
5 changed files with 1180 additions and 6 deletions
|
|
@ -2135,5 +2135,15 @@
|
|||
"assistantAddTitle": "Zu deiner Frage hinzufügen",
|
||||
"assistantAddCamera": "Kamera",
|
||||
"assistantAddPhotos": "Fotos",
|
||||
"assistantAddFiles": "Dateien"
|
||||
"assistantAddFiles": "Dateien",
|
||||
"assistantTalk": "Sprachmodus",
|
||||
"voiceTitle": "Lass uns reden",
|
||||
"voiceListening": "Ich höre zu …",
|
||||
"voiceThinking": "Ich denke nach …",
|
||||
"voiceTapToTalk": "Tippe aufs Mikrofon, um zu sprechen",
|
||||
"voiceTalk": "Sprechen",
|
||||
"voiceDone": "Senden",
|
||||
"voiceSpeakerOff": "Antworten nicht vorlesen",
|
||||
"voiceSpeakerOn": "Antworten vorlesen",
|
||||
"voiceEnd": "Sprachmodus beenden"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2557,5 +2557,25 @@
|
|||
"assistantAddPhotos": "Photos",
|
||||
"@assistantAddPhotos": {"description": "Tile in +'s sheet: picks photos from the device."},
|
||||
"assistantAddFiles": "Files",
|
||||
"@assistantAddFiles": {"description": "Tile in +'s sheet: picks files (PDFs, texts, images)."}
|
||||
"@assistantAddFiles": {"description": "Tile in +'s sheet: picks files (PDFs, texts, images)."},
|
||||
"assistantTalk": "Voice mode",
|
||||
"@assistantTalk": {"description": "The field's button opening voice mode, a conversation spoken rather than typed (ADR 0021, D68)"},
|
||||
"voiceTitle": "Let's talk",
|
||||
"@voiceTitle": {"description": "Voice mode's heading"},
|
||||
"voiceListening": "Listening…",
|
||||
"@voiceListening": {"description": "Voice mode while it hears the person"},
|
||||
"voiceThinking": "Thinking…",
|
||||
"@voiceThinking": {"description": "Voice mode while the answer is awaited"},
|
||||
"voiceTapToTalk": "Tap the microphone to talk",
|
||||
"@voiceTapToTalk": {"description": "Voice mode waiting for the microphone"},
|
||||
"voiceTalk": "Talk",
|
||||
"@voiceTalk": {"description": "The microphone's tooltip: listens, stopping any reading"},
|
||||
"voiceDone": "Send",
|
||||
"@voiceDone": {"description": "The microphone's tooltip while listening: stops and asks what was heard"},
|
||||
"voiceSpeakerOff": "Don't read answers aloud",
|
||||
"@voiceSpeakerOff": {"description": "Switches reading answers aloud off"},
|
||||
"voiceSpeakerOn": "Read answers aloud",
|
||||
"@voiceSpeakerOn": {"description": "Switches reading answers aloud on"},
|
||||
"voiceEnd": "End voice mode",
|
||||
"@voiceEnd": {"description": "Closes voice mode"}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12601,6 +12601,66 @@ abstract class AppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'Files'**
|
||||
String get assistantAddFiles;
|
||||
|
||||
/// The field's button opening voice mode, a conversation spoken rather than typed (ADR 0021, D68)
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Voice mode'**
|
||||
String get assistantTalk;
|
||||
|
||||
/// Voice mode's heading
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Let\'s talk'**
|
||||
String get voiceTitle;
|
||||
|
||||
/// Voice mode while it hears the person
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Listening…'**
|
||||
String get voiceListening;
|
||||
|
||||
/// Voice mode while the answer is awaited
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Thinking…'**
|
||||
String get voiceThinking;
|
||||
|
||||
/// Voice mode waiting for the microphone
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Tap the microphone to talk'**
|
||||
String get voiceTapToTalk;
|
||||
|
||||
/// The microphone's tooltip: listens, stopping any reading
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Talk'**
|
||||
String get voiceTalk;
|
||||
|
||||
/// The microphone's tooltip while listening: stops and asks what was heard
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Send'**
|
||||
String get voiceDone;
|
||||
|
||||
/// Switches reading answers aloud off
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Don\'t read answers aloud'**
|
||||
String get voiceSpeakerOff;
|
||||
|
||||
/// Switches reading answers aloud on
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Read answers aloud'**
|
||||
String get voiceSpeakerOn;
|
||||
|
||||
/// Closes voice mode
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'End voice mode'**
|
||||
String get voiceEnd;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
|
|
|||
|
|
@ -8079,4 +8079,34 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
|
||||
@override
|
||||
String get assistantAddFiles => 'Dateien';
|
||||
|
||||
@override
|
||||
String get assistantTalk => 'Sprachmodus';
|
||||
|
||||
@override
|
||||
String get voiceTitle => 'Lass uns reden';
|
||||
|
||||
@override
|
||||
String get voiceListening => 'Ich höre zu …';
|
||||
|
||||
@override
|
||||
String get voiceThinking => 'Ich denke nach …';
|
||||
|
||||
@override
|
||||
String get voiceTapToTalk => 'Tippe aufs Mikrofon, um zu sprechen';
|
||||
|
||||
@override
|
||||
String get voiceTalk => 'Sprechen';
|
||||
|
||||
@override
|
||||
String get voiceDone => 'Senden';
|
||||
|
||||
@override
|
||||
String get voiceSpeakerOff => 'Antworten nicht vorlesen';
|
||||
|
||||
@override
|
||||
String get voiceSpeakerOn => 'Antworten vorlesen';
|
||||
|
||||
@override
|
||||
String get voiceEnd => 'Sprachmodus beenden';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8006,6 +8006,36 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
|
||||
@override
|
||||
String get assistantAddFiles => 'Files';
|
||||
|
||||
@override
|
||||
String get assistantTalk => 'Voice mode';
|
||||
|
||||
@override
|
||||
String get voiceTitle => 'Let\'s talk';
|
||||
|
||||
@override
|
||||
String get voiceListening => 'Listening…';
|
||||
|
||||
@override
|
||||
String get voiceThinking => 'Thinking…';
|
||||
|
||||
@override
|
||||
String get voiceTapToTalk => 'Tap the microphone to talk';
|
||||
|
||||
@override
|
||||
String get voiceTalk => 'Talk';
|
||||
|
||||
@override
|
||||
String get voiceDone => 'Send';
|
||||
|
||||
@override
|
||||
String get voiceSpeakerOff => 'Don\'t read answers aloud';
|
||||
|
||||
@override
|
||||
String get voiceSpeakerOn => 'Read answers aloud';
|
||||
|
||||
@override
|
||||
String get voiceEnd => 'End voice mode';
|
||||
}
|
||||
|
||||
/// The translations for English, as used in the United Kingdom (`en_GB`).
|
||||
|
|
|
|||
Loading…
Reference in a new issue