{
  "aboutHtml": "<p>Το Grok Text to Speech είναι η δυνατότητα μετατροπής κειμένου σε ήχο της οικογένειας φωνής Grok. Ο κατασκευαστής τεκμηριώνει εκφραστικές ενσωματωμένες φωνές, ενσωματωμένες φωνητικές οδηγίες και μορφές εξόδου κατάλληλες για αναπαραγωγή πολυμέσων ή ήχο τηλεφωνίας. Είσοδός του είναι το κείμενο προς εκφώνηση, μαζί με τις επιλογές φωνής και γλώσσας. Η ηχογράφηση που προκύπτει είναι ομιλία από αυτό το κείμενο· η αναγνώριση ομιλίας και τα συνομιλιακά μοντέλα μετατροπής ομιλίας σε ομιλία έχουν διαφορετικές εργασίες.</p><h4>Φωνή, γλώσσα και εκφωνούμενο κείμενο</h4><p>Ο κατάλογος του κατασκευαστή δίνει σε κάθε φωνή ένα προφίλ εκφοράς. Η Ara είναι ζεστή και φιλική, η Eve έχει ζωηρό τόνο και βρετανική προφορά, ενώ η Rex περιγράφεται ως καθαρή και γεμάτη αυτοπεποίθηση. Η φωνή και η γλώσσα είναι ανεξάρτητες στην τεκμηριωμένη οικογένεια: οι ενσωματωμένες φωνές μπορούν να χρησιμοποιούν κάθε υποστηριζόμενη επιλογή γλώσσας. Ο οδηγός παραθέτει είκοσι επιλογές κωδικού γλώσσας, συμπεριλαμβανομένων τοπικών παραλλαγών, και υποστηρίζει επίσης αυτόματη ανίχνευση γλώσσας. Πέρα από τις ενσωματωμένες φωνές, ο κατασκευαστής τεκμηριώνει επαναχρησιμοποιήσιμες προσαρμοσμένες φωνές που δημιουργούνται από ηχογράφηση αναφοράς και επιλέγονται μέσω voice_id για πλήρη σύνθεση ή σύνθεση με συνεχή μετάδοση. Ο ήχος αναφοράς μπορεί να έχει διάρκεια έως 120 δευτερόλεπτα· συνιστώνται 90–120 δευτερόλεπτα καθαρής ομιλίας ενός ομιλητή, ώστε να αποτυπωθούν η εκφορά και ο επιτονισμός. Διατηρήστε την αναφορά, το προφίλ φωνής που δημιουργήθηκε και την παραγόμενη ηχογράφηση ως ξεχωριστά τεχνουργήματα και ταιριάξτε την ερμηνεία της αναφοράς στο προβλεπόμενο κείμενο.</p><p>Προετοιμάστε την τελική διατύπωση που θα ακουστεί, διατηρώντας την επιδιωκόμενη γλώσσα των ονομάτων και των παραθεμάτων. Για έναν αφηγούμενο οδηγό, μια χρήσιμη φράση είναι: «Επιλέξτε ένα θέμα, ακούστε τη σύντομη εισαγωγή και ανοίξτε την ενότητα που θέλετε να εξερευνήσετε». Αν μια επωνυμία ή ένας ειδικός όρος χρειάζεται συγκεκριμένη ανάγνωση, οι ρυθμίσεις αντικατάστασης του κατασκευαστή μπορούν να δώσουν εναλλακτική γραφή ή προφορά IPA χωρίς να αλλάξει το εμφανιζόμενο αρχικό κείμενο. Μια ξεχωριστή επιλογή κανονικοποίησης κειμένου μετατρέπει γραπτούς αριθμούς, συντομογραφίες και σύμβολα προς την προφορική τους μορφή.</p><h4>Οδηγίες ερμηνείας</h4><p>Οι ενσωματωμένες ετικέτες τοποθετούν ένα συμβάν σε συγκεκριμένο σημείο, όπως παύση, γέλιο, αναστεναγμό ή ανάσα. Οι ετικέτες που περικλείουν κείμενο εφαρμόζουν εκφορά σε ολόκληρη φράση, για παράδειγμα ψίθυρο, έμφαση ή πιο αργό ρυθμό. Τοποθετήστε την οδηγία εκεί όπου το απαιτεί το νόημα και διατηρήστε τις λέξεις ευανάγνωστες. Ο οδηγός συνιστά εύρη ύφους που καλύπτουν ολοκληρωμένες φράσεις και στίξη, αντί για συσσώρευση άσχετων ετικετών.</p><p>Για μια εκφραστική ατάκα χαρακτήρα, προετοιμάστε μαζί την εκφωνούμενη πρόταση και τη μεταβολή της ερμηνείας. Για μια εξήγηση, διατηρήστε σαφή ρυθμό που βοηθά τον ακροατή να παρακολουθήσει τα βήματα. Το τεκμηριωμένο εύρος ταχύτητας ομιλίας είναι από 0.7 έως 1.5, με το 1.0 να αντιστοιχεί στη φυσιολογική εκφορά. Η επιλογή ταχύτητας αλλάζει τον ρυθμό της ομιλίας· δεν αλλάζει τις λέξεις που πρέπει να μεταδώσει η εφαρμογή.</p><h4>Ήχος και χρονισμοί</h4><p>Ο κατασκευαστής τεκμηριώνει έξοδο MP3, WAV, ακατέργαστου PCM, mu-law και A-law. Οι υποστηριζόμενες επιλογές συχνότητας δειγματοληψίας εκτείνονται από 8 kHz έως 48 kHz, με συγκεκριμένες καταγεγραμμένες συχνότητες μεταξύ αυτών των τιμών. Η προεπιλεγμένη ρύθμιση MP3 είναι 24 kHz στα 128 kbit/s. Χρησιμοποιήστε αναπαράσταση ήχου που μπορεί να ερμηνεύσει η προβλεπόμενη συσκευή αναπαραγωγής, το στάδιο επεξεργασίας ή η διαδρομή τηλεφωνίας.</p><p>Οι προαιρετικοί χρονισμοί χαρακτήρων αντιστοιχίζουν την επιστρεφόμενη ακολουθία χαρακτήρων με χρόνους έναρξης και λήξης. Χωρίς αντικαταστάσεις προφοράς, αυτή η ακολουθία αντικατοπτρίζει την είσοδο· οι αντικαταστάσεις μπορούν να τη μετατρέψουν στο εκφωνούμενο κείμενο. Μπορούν να υποστηρίξουν εμφάνιση κειμένου για παράλληλη ανάγνωση, επισήμανση ή ευθυγράμμιση με μια οπτική ερμηνεία. Στη ροή πλήρους απόκρισης, το αίτημα χρονισμών αλλάζει την έξοδο σε περίβλημα που περιέχει κωδικοποιημένο ήχο και δεδομένα χρονισμού. Αντιμετωπίστε τους χρονισμούς και τον ήχο ως συνδεδεμένο αποτέλεσμα, ιδιαίτερα όταν η κανονικοποίηση κειμένου αναπτύσσει ένα γραπτό σύμβολο σε πολλές εκφωνούμενες λέξεις.</p><h4>Πλήρης παραγωγή ή συνεχής μετάδοση</h4><p>Ο κατασκευαστής προσφέρει διαδρομή πλήρους αιτήματος και αμφίδρομη συνεχή μετάδοση, στην οποία καταφθάνουν αποσπάσματα κειμένου και επιστρέφουν τμήματα ήχου καθώς παράγεται η φράση. Τεκμηριώνει όριο 60.000 χαρακτήρων για ένα πλήρες αίτημα και για ένα μεμονωμένο απόσπασμα κειμένου σε συνεχή μετάδοση. Η ολοκλήρωση ή η εκκαθάριση μιας φράσης έχει ρητό ρόλο στη ροή συνεχούς μετάδοσης.</p><p>Για μεγαλύτερη αφήγηση, επιλέξτε συνεκτικά όρια αποσπασμάτων και διατηρήστε το κείμενο μαζί με κάθε αποτέλεσμα. Για διαδραστική αναπαραγωγή, διακρίνετε το κείμενο που στάλθηκε για σύνθεση από τον ήχο που έχει ήδη ακούσει ο ακροατής. Το χρήσιμο παραδοτέο είναι ένα εκφωνημένο κείμενο με σκόπιμες οδηγίες ερμηνείας, κατάλληλη μορφή ήχου και δεδομένα χρονισμού όταν τα χρειάζεται η εφαρμογή. Διατηρήστε το κείμενο, την επιλεγμένη φωνή, τις οδηγίες ερμηνείας και τις ρυθμίσεις εξόδου μαζί με τον ήχο, ώστε οι μελλοντικές αναθεωρήσεις να διατηρούν την επιδιωκόμενη εκφορά.</p>",
  "aboutText": "Το Grok Text to Speech είναι η δυνατότητα μετατροπής κειμένου σε ήχο της οικογένειας φωνής Grok. Ο κατασκευαστής τεκμηριώνει εκφραστικές ενσωματωμένες φωνές, ενσωματωμένες φωνητικές οδηγίες και μορφές εξόδου κατάλληλες για αναπαραγωγή πολυμέσων ή ήχο τηλεφωνίας. Είσοδός του είναι το κείμενο προς εκφώνηση, μαζί με τις επιλογές φωνής και γλώσσας. Η ηχογράφηση που προκύπτει είναι ομιλία από αυτό το κείμενο· η αναγνώριση ομιλίας και τα συνομιλιακά μοντέλα μετατροπής ομιλίας σε ομιλία έχουν διαφορετικές εργασίες.\n\n### Φωνή, γλώσσα και εκφωνούμενο κείμενο\n\nΟ κατάλογος του κατασκευαστή δίνει σε κάθε φωνή ένα προφίλ εκφοράς. Η Ara είναι ζεστή και φιλική, η Eve έχει ζωηρό τόνο και βρετανική προφορά, ενώ η Rex περιγράφεται ως καθαρή και γεμάτη αυτοπεποίθηση. Η φωνή και η γλώσσα είναι ανεξάρτητες στην τεκμηριωμένη οικογένεια: οι ενσωματωμένες φωνές μπορούν να χρησιμοποιούν κάθε υποστηριζόμενη επιλογή γλώσσας. Ο οδηγός παραθέτει είκοσι επιλογές κωδικού γλώσσας, συμπεριλαμβανομένων τοπικών παραλλαγών, και υποστηρίζει επίσης αυτόματη ανίχνευση γλώσσας. Πέρα από τις ενσωματωμένες φωνές, ο κατασκευαστής τεκμηριώνει επαναχρησιμοποιήσιμες προσαρμοσμένες φωνές που δημιουργούνται από ηχογράφηση αναφοράς και επιλέγονται μέσω voice_id για πλήρη σύνθεση ή σύνθεση με συνεχή μετάδοση. Ο ήχος αναφοράς μπορεί να έχει διάρκεια έως 120 δευτερόλεπτα· συνιστώνται 90–120 δευτερόλεπτα καθαρής ομιλίας ενός ομιλητή, ώστε να αποτυπωθούν η εκφορά και ο επιτονισμός. Διατηρήστε την αναφορά, το προφίλ φωνής που δημιουργήθηκε και την παραγόμενη ηχογράφηση ως ξεχωριστά τεχνουργήματα και ταιριάξτε την ερμηνεία της αναφοράς στο προβλεπόμενο κείμενο.\n\nΠροετοιμάστε την τελική διατύπωση που θα ακουστεί, διατηρώντας την επιδιωκόμενη γλώσσα των ονομάτων και των παραθεμάτων. Για έναν αφηγούμενο οδηγό, μια χρήσιμη φράση είναι: «Επιλέξτε ένα θέμα, ακούστε τη σύντομη εισαγωγή και ανοίξτε την ενότητα που θέλετε να εξερευνήσετε». Αν μια επωνυμία ή ένας ειδικός όρος χρειάζεται συγκεκριμένη ανάγνωση, οι ρυθμίσεις αντικατάστασης του κατασκευαστή μπορούν να δώσουν εναλλακτική γραφή ή προφορά IPA χωρίς να αλλάξει το εμφανιζόμενο αρχικό κείμενο. Μια ξεχωριστή επιλογή κανονικοποίησης κειμένου μετατρέπει γραπτούς αριθμούς, συντομογραφίες και σύμβολα προς την προφορική τους μορφή.\n\n### Οδηγίες ερμηνείας\n\nΟι ενσωματωμένες ετικέτες τοποθετούν ένα συμβάν σε συγκεκριμένο σημείο, όπως παύση, γέλιο, αναστεναγμό ή ανάσα. Οι ετικέτες που περικλείουν κείμενο εφαρμόζουν εκφορά σε ολόκληρη φράση, για παράδειγμα ψίθυρο, έμφαση ή πιο αργό ρυθμό. Τοποθετήστε την οδηγία εκεί όπου το απαιτεί το νόημα και διατηρήστε τις λέξεις ευανάγνωστες. Ο οδηγός συνιστά εύρη ύφους που καλύπτουν ολοκληρωμένες φράσεις και στίξη, αντί για συσσώρευση άσχετων ετικετών.\n\nΓια μια εκφραστική ατάκα χαρακτήρα, προετοιμάστε μαζί την εκφωνούμενη πρόταση και τη μεταβολή της ερμηνείας. Για μια εξήγηση, διατηρήστε σαφή ρυθμό που βοηθά τον ακροατή να παρακολουθήσει τα βήματα. Το τεκμηριωμένο εύρος ταχύτητας ομιλίας είναι από 0.7 έως 1.5, με το 1.0 να αντιστοιχεί στη φυσιολογική εκφορά. Η επιλογή ταχύτητας αλλάζει τον ρυθμό της ομιλίας· δεν αλλάζει τις λέξεις που πρέπει να μεταδώσει η εφαρμογή.\n\n### Ήχος και χρονισμοί\n\nΟ κατασκευαστής τεκμηριώνει έξοδο MP3, WAV, ακατέργαστου PCM, mu-law και A-law. Οι υποστηριζόμενες επιλογές συχνότητας δειγματοληψίας εκτείνονται από 8 kHz έως 48 kHz, με συγκεκριμένες καταγεγραμμένες συχνότητες μεταξύ αυτών των τιμών. Η προεπιλεγμένη ρύθμιση MP3 είναι 24 kHz στα 128 kbit/s. Χρησιμοποιήστε αναπαράσταση ήχου που μπορεί να ερμηνεύσει η προβλεπόμενη συσκευή αναπαραγωγής, το στάδιο επεξεργασίας ή η διαδρομή τηλεφωνίας.\n\nΟι προαιρετικοί χρονισμοί χαρακτήρων αντιστοιχίζουν την επιστρεφόμενη ακολουθία χαρακτήρων με χρόνους έναρξης και λήξης. Χωρίς αντικαταστάσεις προφοράς, αυτή η ακολουθία αντικατοπτρίζει την είσοδο· οι αντικαταστάσεις μπορούν να τη μετατρέψουν στο εκφωνούμενο κείμενο. Μπορούν να υποστηρίξουν εμφάνιση κειμένου για παράλληλη ανάγνωση, επισήμανση ή ευθυγράμμιση με μια οπτική ερμηνεία. Στη ροή πλήρους απόκρισης, το αίτημα χρονισμών αλλάζει την έξοδο σε περίβλημα που περιέχει κωδικοποιημένο ήχο και δεδομένα χρονισμού. Αντιμετωπίστε τους χρονισμούς και τον ήχο ως συνδεδεμένο αποτέλεσμα, ιδιαίτερα όταν η κανονικοποίηση κειμένου αναπτύσσει ένα γραπτό σύμβολο σε πολλές εκφωνούμενες λέξεις.\n\n### Πλήρης παραγωγή ή συνεχής μετάδοση\n\nΟ κατασκευαστής προσφέρει διαδρομή πλήρους αιτήματος και αμφίδρομη συνεχή μετάδοση, στην οποία καταφθάνουν αποσπάσματα κειμένου και επιστρέφουν τμήματα ήχου καθώς παράγεται η φράση. Τεκμηριώνει όριο 60.000 χαρακτήρων για ένα πλήρες αίτημα και για ένα μεμονωμένο απόσπασμα κειμένου σε συνεχή μετάδοση. Η ολοκλήρωση ή η εκκαθάριση μιας φράσης έχει ρητό ρόλο στη ροή συνεχούς μετάδοσης.\n\nΓια μεγαλύτερη αφήγηση, επιλέξτε συνεκτικά όρια αποσπασμάτων και διατηρήστε το κείμενο μαζί με κάθε αποτέλεσμα. Για διαδραστική αναπαραγωγή, διακρίνετε το κείμενο που στάλθηκε για σύνθεση από τον ήχο που έχει ήδη ακούσει ο ακροατής. Το χρήσιμο παραδοτέο είναι ένα εκφωνημένο κείμενο με σκόπιμες οδηγίες ερμηνείας, κατάλληλη μορφή ήχου και δεδομένα χρονισμού όταν τα χρειάζεται η εφαρμογή. Διατηρήστε το κείμενο, την επιλεγμένη φωνή, τις οδηγίες ερμηνείας και τις ρυθμίσεις εξόδου μαζί με τον ήχο, ώστε οι μελλοντικές αναθεωρήσεις να διατηρούν την επιδιωκόμενη εκφορά.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "79aac2dcc174b4dfb25c716e73d69b7d0f6765220fe95e137fbb37e428c3ab20",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "el",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">SpaceXAI: Grok Voice TTS 1.0</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>SpaceXAI /</span><code>x-ai/grok-voice-tts-1.0</code><button type=\"button\" id=\"copy-id\">Αντιγραφή ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Ενότητες κάρτας μοντέλου\"><button type=\"button\" data-card-jump=\"overview\">Εισαγωγή</button><button type=\"button\" data-card-jump=\"methods\">Είσοδοι και μέθοδοι</button><button type=\"button\" data-card-jump=\"pricing\">Τιμολόγηση</button><button type=\"button\" data-card-jump=\"examples\">Παραδείγματα</button><button type=\"button\" data-card-jump=\"results\">Αποτελέσματα</button><button type=\"button\" data-card-jump=\"aliases\">Εναλλακτικά ονόματα</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Μέθοδοι API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|speech|/v1/audio/speech|x-ai%2Fgrok-voice-tts-1.0\">Σύνθεση ομιλίας</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Εισαγωγή</h3><p class=\"mdesc-full\">Το Grok Text to Speech μετατρέπει το γραπτό κείμενο σε εκφραστικό ήχο, με επιλέξιμες φωνές, ενσωματωμένες οδηγίες ερμηνείας και πολλούς κωδικοποιητές εξόδου. Η τεκμηριωμένη οικογένεια του κατασκευαστή υποστηρίζει πλήρη παραγωγή και συνεχή μετάδοση ομιλίας, καθώς και προαιρετικούς χρονισμούς ανά χαρακτήρα.</p><dl class=\"card-io\" data-card-io><div><dt>Αποδεκτές είσοδοι</dt><dd>Κείμενο</dd></div><div><dt>Αποτελέσματα</dt><dd>Ήχος</dd></div></dl><details class=\"card-about\"><summary>Σχετικά με το μοντέλο</summary><p class=\"note-s\" data-model-method-boundary>Αυτή η περιγραφή καλύπτει τις δυνατότητες του μοντέλου. Οι είσοδοι, έξοδοι και επιλογές που διατίθενται στο Ailoot παρατίθενται παρακάτω για την επιλεγμένη μέθοδο.</p><div class=\"mabout\" id=\"m-about\"><p>Το Grok Text to Speech είναι η δυνατότητα μετατροπής κειμένου σε ήχο της οικογένειας φωνής Grok. Ο κατασκευαστής τεκμηριώνει εκφραστικές ενσωματωμένες φωνές, ενσωματωμένες φωνητικές οδηγίες και μορφές εξόδου κατάλληλες για αναπαραγωγή πολυμέσων ή ήχο τηλεφωνίας. Είσοδός του είναι το κείμενο προς εκφώνηση, μαζί με τις επιλογές φωνής και γλώσσας. Η ηχογράφηση που προκύπτει είναι ομιλία από αυτό το κείμενο· η αναγνώριση ομιλίας και τα συνομιλιακά μοντέλα μετατροπής ομιλίας σε ομιλία έχουν διαφορετικές εργασίες.</p><h4>Φωνή, γλώσσα και εκφωνούμενο κείμενο</h4><p>Ο κατάλογος του κατασκευαστή δίνει σε κάθε φωνή ένα προφίλ εκφοράς. Η Ara είναι ζεστή και φιλική, η Eve έχει ζωηρό τόνο και βρετανική προφορά, ενώ η Rex περιγράφεται ως καθαρή και γεμάτη αυτοπεποίθηση. Η φωνή και η γλώσσα είναι ανεξάρτητες στην τεκμηριωμένη οικογένεια: οι ενσωματωμένες φωνές μπορούν να χρησιμοποιούν κάθε υποστηριζόμενη επιλογή γλώσσας. Ο οδηγός παραθέτει είκοσι επιλογές κωδικού γλώσσας, συμπεριλαμβανομένων τοπικών παραλλαγών, και υποστηρίζει επίσης αυτόματη ανίχνευση γλώσσας. Πέρα από τις ενσωματωμένες φωνές, ο κατασκευαστής τεκμηριώνει επαναχρησιμοποιήσιμες προσαρμοσμένες φωνές που δημιουργούνται από ηχογράφηση αναφοράς και επιλέγονται μέσω voice_id για πλήρη σύνθεση ή σύνθεση με συνεχή μετάδοση. Ο ήχος αναφοράς μπορεί να έχει διάρκεια έως 120 δευτερόλεπτα· συνιστώνται 90–120 δευτερόλεπτα καθαρής ομιλίας ενός ομιλητή, ώστε να αποτυπωθούν η εκφορά και ο επιτονισμός. Διατηρήστε την αναφορά, το προφίλ φωνής που δημιουργήθηκε και την παραγόμενη ηχογράφηση ως ξεχωριστά τεχνουργήματα και ταιριάξτε την ερμηνεία της αναφοράς στο προβλεπόμενο κείμενο.</p><p>Προετοιμάστε την τελική διατύπωση που θα ακουστεί, διατηρώντας την επιδιωκόμενη γλώσσα των ονομάτων και των παραθεμάτων. Για έναν αφηγούμενο οδηγό, μια χρήσιμη φράση είναι: «Επιλέξτε ένα θέμα, ακούστε τη σύντομη εισαγωγή και ανοίξτε την ενότητα που θέλετε να εξερευνήσετε». Αν μια επωνυμία ή ένας ειδικός όρος χρειάζεται συγκεκριμένη ανάγνωση, οι ρυθμίσεις αντικατάστασης του κατασκευαστή μπορούν να δώσουν εναλλακτική γραφή ή προφορά IPA χωρίς να αλλάξει το εμφανιζόμενο αρχικό κείμενο. Μια ξεχωριστή επιλογή κανονικοποίησης κειμένου μετατρέπει γραπτούς αριθμούς, συντομογραφίες και σύμβολα προς την προφορική τους μορφή.</p><h4>Οδηγίες ερμηνείας</h4><p>Οι ενσωματωμένες ετικέτες τοποθετούν ένα συμβάν σε συγκεκριμένο σημείο, όπως παύση, γέλιο, αναστεναγμό ή ανάσα. Οι ετικέτες που περικλείουν κείμενο εφαρμόζουν εκφορά σε ολόκληρη φράση, για παράδειγμα ψίθυρο, έμφαση ή πιο αργό ρυθμό. Τοποθετήστε την οδηγία εκεί όπου το απαιτεί το νόημα και διατηρήστε τις λέξεις ευανάγνωστες. Ο οδηγός συνιστά εύρη ύφους που καλύπτουν ολοκληρωμένες φράσεις και στίξη, αντί για συσσώρευση άσχετων ετικετών.</p><p>Για μια εκφραστική ατάκα χαρακτήρα, προετοιμάστε μαζί την εκφωνούμενη πρόταση και τη μεταβολή της ερμηνείας. Για μια εξήγηση, διατηρήστε σαφή ρυθμό που βοηθά τον ακροατή να παρακολουθήσει τα βήματα. Το τεκμηριωμένο εύρος ταχύτητας ομιλίας είναι από 0.7 έως 1.5, με το 1.0 να αντιστοιχεί στη φυσιολογική εκφορά. Η επιλογή ταχύτητας αλλάζει τον ρυθμό της ομιλίας· δεν αλλάζει τις λέξεις που πρέπει να μεταδώσει η εφαρμογή.</p><h4>Ήχος και χρονισμοί</h4><p>Ο κατασκευαστής τεκμηριώνει έξοδο MP3, WAV, ακατέργαστου PCM, mu-law και A-law. Οι υποστηριζόμενες επιλογές συχνότητας δειγματοληψίας εκτείνονται από 8 kHz έως 48 kHz, με συγκεκριμένες καταγεγραμμένες συχνότητες μεταξύ αυτών των τιμών. Η προεπιλεγμένη ρύθμιση MP3 είναι 24 kHz στα 128 kbit/s. Χρησιμοποιήστε αναπαράσταση ήχου που μπορεί να ερμηνεύσει η προβλεπόμενη συσκευή αναπαραγωγής, το στάδιο επεξεργασίας ή η διαδρομή τηλεφωνίας.</p><p>Οι προαιρετικοί χρονισμοί χαρακτήρων αντιστοιχίζουν την επιστρεφόμενη ακολουθία χαρακτήρων με χρόνους έναρξης και λήξης. Χωρίς αντικαταστάσεις προφοράς, αυτή η ακολουθία αντικατοπτρίζει την είσοδο· οι αντικαταστάσεις μπορούν να τη μετατρέψουν στο εκφωνούμενο κείμενο. Μπορούν να υποστηρίξουν εμφάνιση κειμένου για παράλληλη ανάγνωση, επισήμανση ή ευθυγράμμιση με μια οπτική ερμηνεία. Στη ροή πλήρους απόκρισης, το αίτημα χρονισμών αλλάζει την έξοδο σε περίβλημα που περιέχει κωδικοποιημένο ήχο και δεδομένα χρονισμού. Αντιμετωπίστε τους χρονισμούς και τον ήχο ως συνδεδεμένο αποτέλεσμα, ιδιαίτερα όταν η κανονικοποίηση κειμένου αναπτύσσει ένα γραπτό σύμβολο σε πολλές εκφωνούμενες λέξεις.</p><h4>Πλήρης παραγωγή ή συνεχής μετάδοση</h4><p>Ο κατασκευαστής προσφέρει διαδρομή πλήρους αιτήματος και αμφίδρομη συνεχή μετάδοση, στην οποία καταφθάνουν αποσπάσματα κειμένου και επιστρέφουν τμήματα ήχου καθώς παράγεται η φράση. Τεκμηριώνει όριο 60.000 χαρακτήρων για ένα πλήρες αίτημα και για ένα μεμονωμένο απόσπασμα κειμένου σε συνεχή μετάδοση. Η ολοκλήρωση ή η εκκαθάριση μιας φράσης έχει ρητό ρόλο στη ροή συνεχούς μετάδοσης.</p><p>Για μεγαλύτερη αφήγηση, επιλέξτε συνεκτικά όρια αποσπασμάτων και διατηρήστε το κείμενο μαζί με κάθε αποτέλεσμα. Για διαδραστική αναπαραγωγή, διακρίνετε το κείμενο που στάλθηκε για σύνθεση από τον ήχο που έχει ήδη ακούσει ο ακροατής. Το χρήσιμο παραδοτέο είναι ένα εκφωνημένο κείμενο με σκόπιμες οδηγίες ερμηνείας, κατάλληλη μορφή ήχου και δεδομένα χρονισμού όταν τα χρειάζεται η εφαρμογή. Διατηρήστε το κείμενο, την επιλεγμένη φωνή, τις οδηγίες ερμηνείας και τις ρυθμίσεις εξόδου μαζί με τον ήχο, ώστε οι μελλοντικές αναθεωρήσεις να διατηρούν την επιδιωκόμενη εκφορά.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Διαθέσιμα στο Ailoot · είσοδοι και μέθοδοι</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Σύνθεση ομιλίας</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Είσοδος</dt><dd><code>text</code></dd></div><div><dt>Έξοδος</dt><dd><code>audio</code></dd></div><div><dt>Μορφή εξόδου</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Πεδίο</th><th>Τύπος</th><th>Απαίτηση</th><th>Τιμές και όρια</th><th>Προεπιλογή</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>x-ai/grok-voice-tts-1.0</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Ελάχιστο μήκος: 1</div><div>Μέγιστο μήκος: 15.000</div><div>Μονάδα: χαρακτήρες Unicode</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>eve, ara, rex, sal, leo</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>mp3</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Συνδυασμοί υλικών εισόδου</summary><p class=\"note-s\"><b>text_to_speech</b> · Υποχρεωτικό: input</p></details><details class=\"note-s\" data-method-contract><summary>Παράμετροι και κύκλος ζωής μεθόδου</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Παράμετρος</th><th>Σύμβαση</th></tr></thead><tbody><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>content_type</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>application/json</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>required</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>model, input, voice, response_format</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>voice_ids</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>eve, ara, rex, sal, leo</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>response_format</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>mp3</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>max_input_characters</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>15000</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>other_options</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>false</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>input</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>ακριβές κείμενο UTF-8· πλήθος χαρακτήρων Unicode χωρίς κανονικοποίηση</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>material_types</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>text</td></tr></tbody></table></div><p>Κύκλος ζωής: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · Το πραγματικό task_id που επιστράφηκε ή μια εγγραφή στη βιβλιοθήκη πολυμέσων</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p><p class=\"note-s\">Επιλέξτε την ακριβή φωνή από αυτό το προφίλ μοντέλου.</p><p class=\"note-s\">Οι χαρακτήρες εισόδου και τα δευτερόλεπτα ήχου αποτελούν διαφορετικές μονάδες μέτρησης.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Τιμολόγηση</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Οι τιμολογιακές αναφορές δεν προσθέτουν επιλογές αιτήματος. Οι υποστηριζόμενες παράμετροι αναφέρονται στην επιλεγμένη μέθοδο.</p><dl data-price-conditions><dt>Γρήγορη λειτουργία</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν επιλέγεται η γρήγορη λειτουργία</span></dd><dt>Λειτουργία flex</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν επιλέγεται η λειτουργία flex</span></dd><dt>Μέγιστη προσπάθεια συλλογισμού</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν η μέγιστη προσπάθεια συλλογισμού χρησιμοποιεί την προσαρμογή default</span></dd></dl></div><div data-declared-tariff-pricing><h4>Χρεώσεις Ailoot</h4><h4>Τιμές ανά διαμόρφωση</h4><p class=\"note-s\">Αντιστοιχίστε κάθε χρέωση στις συνθήκες που εμφανίζονται. Χρησιμοποιήστε μία χρέωση ανά σύνολο εναλλακτικών διαμορφώσεων.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Διαμόρφωση</th><th>Πίνακας χρεώσεων</th><th>Χρεώσιμη ποσότητα</th><th>Μονάδα τιμολόγησης</th><th>Χρέωση</th></tr></thead><tbody><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Βασικές χρεώσεις token</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>Βασική χρέωση</td><td data-cell-label=\"Χρεώσιμη ποσότητα\"><span class=\"card-cell-label\">Χρεώσιμη ποσότητα</span>—</td><td data-cell-label=\"Μονάδα τιμολόγησης\"><span class=\"card-cell-label\">Μονάδα τιμολόγησης</span>—</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Είσοδος · Token εισόδου</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Έξοδος · Token εξόδου</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Ανάγνωση από την κρυφή μνήμη</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη, 1 ώρα</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Ultra</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>—</td><td data-cell-label=\"Χρεώσιμη ποσότητα\"><span class=\"card-cell-label\">Χρεώσιμη ποσότητα</span>Κάθε σημείο κώδικα Unicode μετρά ως ένας χαρακτήρας, συμπεριλαμβανομένων των χαρακτήρων Han.</td><td data-cell-label=\"Μονάδα τιμολόγησης\"><span class=\"card-cell-label\">Μονάδα τιμολόγησης</span>ανά 1K χαρακτήρες εισόδου</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Είσοδος · χαρακτήρας εισόδου</span> <b>$0.03</b> <span class=\"price-unit\">ανά 1K χαρακτήρες εισόδου</span></div></td></tr></tbody></table></div></div><div data-declared-reference-pricing><h4>Στοιχεία τιμοκαταλόγου αναφοράς</h4><p class=\"note-s\">Οι πίνακες αναφοράς του μοντέλου δεν αλλάζουν την επιλογή μεθόδου, τις εκτιμήσεις τιμής ή τις χρεώσεις. Οι εφαρμοζόμενες χρεώσεις χρησιμοποιούν τις τιμές της επιλεγμένης μεθόδου Ailoot.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>SpaceXAI: Grok Voice TTS 1.0</summary><h4>Τιμές ανά διαμόρφωση</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Διαμόρφωση</th><th>Συνθήκες χρέωσης</th><th>Χρέωση</th></tr></thead><tbody><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>SpaceXAI: Grok Voice TTS 1.0 · Προεπιλεγμένη διαμόρφωση</th><td data-cell-label=\"Συνθήκες χρέωσης\"><span class=\"card-cell-label\">Συνθήκες χρέωσης</span>Προεπιλεγμένη διαμόρφωση</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Είσοδος · Χαρακτήρες εισόδου</span> <b>0,00003 $</b> <span class=\"price-unit\">ανά χαρακτήρα εισόδου</span></div></td></tr></tbody></table></div></details></div><p class=\"note-s\">Το Ailoot δεσμεύει ένα εκτιμώμενο ποσό πριν από το αίτημα. Μετά το αποτέλεσμα, εκκαθαρίζει την τελική χρέωση βάσει της μετρημένης χρήσης. Η εκκαθάριση ροής χρησιμοποιεί την τελική καταγραφή χρήσης. <a href=\"/docs/el/billing/reserve/\">Πώς λειτουργούν η δέσμευση και η εκκαθάριση →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Παραδείγματα αιτημάτων</h3><h4>Ailoot Ultra · Σύνθεση ομιλίας</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Παραλλαγές κώδικα\"><button class=\"cg-tab\" id=\"model-code-2731-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2731-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Αντιγραφή κώδικα\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2731-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2731-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}&quot;\nexport AILOOT_VOICE_ID\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;x-ai/grok-voice-tts-1.0&quot;, &quot;input&quot;: &quot;Good afternoon! This is a short voice take.&quot;}&#39;)\nvoice=os.environ[&quot;AILOOT_VOICE_ID&quot;]\nallowed=json.loads(&#39;[&quot;eve&quot;, &quot;ara&quot;, &quot;rex&quot;, &quot;sal&quot;, &quot;leo&quot;]&#39;)\nif voice not in allowed: raise SystemExit(&quot;Choose an accepted voice ID from this exact model profile&quot;)\np[&quot;voice&quot;]=voice\np[&quot;response_format&quot;]=&quot;mp3&quot;\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Λήψη και αποθήκευση αποτελεσμάτων</h3><h4>Ailoot Ultra · Σύνθεση ομιλίας</h4><p class=\"note-s\">mp3</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><details class=\"card-about\"><summary>Άλλες ανακτήσεις περιεχομένου</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Παραλλαγές κώδικα\"><button class=\"cg-tab\" id=\"model-code-2732-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2732-panel-0\" aria-selected=\"true\" tabindex=\"0\">Βιβλιοθήκη πολυμέσων</button><button class=\"cg-tab\" id=\"model-code-2732-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2732-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Κατάσταση εργασίας</button><button class=\"cg-tab\" id=\"model-code-2732-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2732-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Στοιχεία αρχείου</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Αντιγραφή κώδικα\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2732-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2732-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-assets.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2732-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2732-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_MEDIA_TASK_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/tasks/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-task.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-task.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2732-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2732-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_ASSET_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/assets/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-asset.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-asset.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Διατηρήστε όλα τα ολοκληρωμένα αποτελέσματα</h5><p class=\"note-s\">Διατηρήστε κάθε πλήρη απάντηση, αρχείο και τμήμα περιεχομένου που επιστρέφεται.</p><p class=\"note-s\">Διατηρήστε ολόκληρο το δυαδικό αποτέλεσμα και τις κεφαλίδες. Αν επιστραφεί JSON ή επιστραφούν πολλαπλές έξοδοι, διατηρήστε κάθε στοιχείο δεδομένων και ανακτήστε κάθε πραγματικό υπογεγραμμένο URL πόρου.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Αν χρειάζεται έλεγχος της αρχικής απάντησης</h5><p class=\"note-s\">Διατηρήστε το αρχικό operation_id/X-Client-Request-ID για τη συμφωνία των εγγραφών χωρίς νέα υποβολή· δεν υπάρχει ειδική διαδρομή περιοδικού ελέγχου για τον ήχο.</p></div><details class=\"card-about\" data-output-fields><summary>Πεδία απάντησης</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Πεδίο</th><th>Τύπος</th></tr></thead><tbody><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>bytes</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>headers</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Σφάλματα και επόμενα βήματα</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Απάντηση</th><th>Συνθήκη</th><th>Επόμενο βήμα</th></tr></thead><tbody><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Μη έγκυρα υποχρεωτικά πεδία, μη έγκυρη αναπαράσταση υλικού ή μη έγκυρη τιμή παραμέτρου</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Διορθώστε τα υποδεικνυόμενα πεδία πριν από νέο αίτημα δημιουργίας.</td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span><code>server_error</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Η απόκριση που επιστράφηκε αναφέρει ότι η λειτουργία ή το αποτέλεσμα χρειάζεται έλεγχο</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Διατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Εναλλακτικά ονόματα</h3><h4>Εναλλακτικά ονόματα μοντέλου</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=x-ai%2Fgrok-voice-tts-1.0&amp;route=Ultra&amp;caller=x-ai%2Fgrok-voice-tts-1.0&amp;fmt=speech\"><code>x-ai/grok-voice-tts-1.0</code></a></span></p><h4>Εναλλακτικές διαδρομές μεθόδων</h4><p class=\"note-s\">Χρησιμοποιήστε τις διαδρομές μεθόδων που εμφανίζονται παραπάνω.</p><h4>Σχετικά ID μοντέλων</h4><p class=\"note-s\"><a href=\"#m=x-ai%2Fgrok-voice-tts-1.0&amp;route=Ultra&amp;caller=x-ai%2Fgrok-voice-tts-1.0&amp;fmt=speech\"><code>x-ai/grok-voice-tts-1.0</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "x-ai/grok-voice-tts-1.0",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "x-ai/grok-voice-tts-1.0",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|x-ai%2Fgrok-voice-tts-1.0",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "Μη έγκυρα υποχρεωτικά πεδία, μη έγκυρη αναπαράσταση υλικού ή μη έγκυρη τιμή παραμέτρου",
                "http_status": 400,
                "recovery": "Διορθώστε τα υποδεικνυόμενα πεδία πριν από νέο αίτημα δημιουργίας.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Η απόκριση που επιστράφηκε αναφέρει ότι η λειτουργία ή το αποτέλεσμα χρειάζεται έλεγχο",
                "http_status": null,
                "recovery": "Διατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Διατηρήστε το αρχικό operation_id/X-Client-Request-ID για τη συμφωνία των εγγραφών χωρίς νέα υποβολή· δεν υπάρχει ειδική διαδρομή περιοδικού ελέγχου για τον ήχο."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "Διατηρήστε ολόκληρο το δυαδικό αποτέλεσμα και τις κεφαλίδες. Αν επιστραφεί JSON ή επιστραφούν πολλαπλές έξοδοι, διατηρήστε κάθε στοιχείο δεδομένων και ανακτήστε κάθε πραγματικό υπογεγραμμένο URL πόρου.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3",
              "http_success": 200
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "x-ai/grok-voice-tts-1.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_known": true,
                "maximum_length": 15000,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "χαρακτήρες Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "eve",
                  "ara",
                  "rex",
                  "sal",
                  "leo"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "every field outside exactmodel,input,voice,response_format",
              "stream/speed/reference speech options"
            ]
          },
          "hints": [
            "Επιλέξτε την ακριβή φωνή από αυτό το προφίλ μοντέλου.",
            "Οι χαρακτήρες εισόδου και τα δευτερόλεπτα ήχου αποτελούν διαφορετικές μονάδες μέτρησης."
          ],
          "input": {
            "content_type": "application/json",
            "input": "ακριβές κείμενο UTF-8· πλήθος χαρακτήρων Unicode χωρίς κανονικοποίηση",
            "material_types": [
              "text"
            ],
            "max_input_characters": 15000,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "eve",
              "ara",
              "rex",
              "sal",
              "leo"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "Το πραγματικό task_id που επιστράφηκε ή μια εγγραφή στη βιβλιοθήκη πολυμέσων",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "family": "audio",
            "format": "mp3",
            "http_success": 200,
            "response": "full binary MP3 plus response headers",
            "result": "complete playable owned MP3"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.03000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "declared_tariff_references": [
          {
            "client_selectable": false,
            "key": "5e001ac1780cc15b5437",
            "label": "SpaceXAI: Grok Voice TTS 1.0",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Προεπιλεγμένη διαμόρφωση"
                },
                "label": "SpaceXAI: Grok Voice TTS 1.0 · Προεπιλεγμένη διαμόρφωση",
                "units": [
                  {
                    "amount": "0.000030",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "ed8a12aff2e585a97bdf27e4",
                    "label": "Input characters",
                    "public_unit_label": "per input character",
                    "quantity": "1",
                    "rate_role": "declared_tariff_rate",
                    "side": "in",
                    "unit": "input_character"
                  }
                ]
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"x-ai/grok-voice-tts-1.0\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"eve\", \"ara\", \"rex\", \"sal\", \"leo\"]')\nif voice not in allowed: raise SystemExit(\"Choose an accepted voice ID from this exact model profile\")\np[\"voice\"]=voice\np[\"response_format\"]=\"mp3\"\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "curl",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Select exact voice from this model profile.",
          "Input characters and audio seconds are different meters."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_character": 3e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.03000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "request_model_id": "x-ai/grok-voice-tts-1.0",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.03000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    }
  ],
  "model_id": "x-ai/grok-voice-tts-1.0",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "ce0a77ebc9651476e649f91cc78db19b4b390f00074ecba9e7153a5a60035f45",
    "input_html_sha256": "285ec745658d42e7c300352657bc9024a411abddbcc82358b45c0e139688524a",
    "private_audit_sha256": "00468ae2f3d926a0f42af8b283d2b2f045260d13492987a34fbdd6df3fbdb777",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/el/x-ai-grok-voice-tts-1-0/",
    "description": "Το Grok Text to Speech μετατρέπει το γραπτό κείμενο σε εκφραστικό ήχο, με επιλέξιμες φωνές, ενσωματωμένες οδηγίες ερμηνείας και πολλούς κωδικοποιητές εξόδου. Η τεκμηριωμένη οικογένεια του κατασκευαστή υποστηρίζει πλήρη παραγωγή και συνεχή μετάδοση ομιλίας, καθώς και προαιρετικούς χρονισμούς ανά χαρακτήρα.",
    "locale": "el",
    "md_url": "https://ailoot.ai/models/el/x-ai-grok-voice-tts-1-0/index.md",
    "title": "SpaceXAI: Grok Voice TTS 1.0 — Ailoot",
    "url": "https://ailoot.ai/models/el/x-ai-grok-voice-tts-1-0/"
  },
  "rawModel": {
    "about": "Το Grok Text to Speech είναι η δυνατότητα μετατροπής κειμένου σε ήχο της οικογένειας φωνής Grok. Ο κατασκευαστής τεκμηριώνει εκφραστικές ενσωματωμένες φωνές, ενσωματωμένες φωνητικές οδηγίες και μορφές εξόδου κατάλληλες για αναπαραγωγή πολυμέσων ή ήχο τηλεφωνίας. Είσοδός του είναι το κείμενο προς εκφώνηση, μαζί με τις επιλογές φωνής και γλώσσας. Η ηχογράφηση που προκύπτει είναι ομιλία από αυτό το κείμενο· η αναγνώριση ομιλίας και τα συνομιλιακά μοντέλα μετατροπής ομιλίας σε ομιλία έχουν διαφορετικές εργασίες.\n\n### Φωνή, γλώσσα και εκφωνούμενο κείμενο\n\nΟ κατάλογος του κατασκευαστή δίνει σε κάθε φωνή ένα προφίλ εκφοράς. Η Ara είναι ζεστή και φιλική, η Eve έχει ζωηρό τόνο και βρετανική προφορά, ενώ η Rex περιγράφεται ως καθαρή και γεμάτη αυτοπεποίθηση. Η φωνή και η γλώσσα είναι ανεξάρτητες στην τεκμηριωμένη οικογένεια: οι ενσωματωμένες φωνές μπορούν να χρησιμοποιούν κάθε υποστηριζόμενη επιλογή γλώσσας. Ο οδηγός παραθέτει είκοσι επιλογές κωδικού γλώσσας, συμπεριλαμβανομένων τοπικών παραλλαγών, και υποστηρίζει επίσης αυτόματη ανίχνευση γλώσσας. Πέρα από τις ενσωματωμένες φωνές, ο κατασκευαστής τεκμηριώνει επαναχρησιμοποιήσιμες προσαρμοσμένες φωνές που δημιουργούνται από ηχογράφηση αναφοράς και επιλέγονται μέσω voice_id για πλήρη σύνθεση ή σύνθεση με συνεχή μετάδοση. Ο ήχος αναφοράς μπορεί να έχει διάρκεια έως 120 δευτερόλεπτα· συνιστώνται 90–120 δευτερόλεπτα καθαρής ομιλίας ενός ομιλητή, ώστε να αποτυπωθούν η εκφορά και ο επιτονισμός. Διατηρήστε την αναφορά, το προφίλ φωνής που δημιουργήθηκε και την παραγόμενη ηχογράφηση ως ξεχωριστά τεχνουργήματα και ταιριάξτε την ερμηνεία της αναφοράς στο προβλεπόμενο κείμενο.\n\nΠροετοιμάστε την τελική διατύπωση που θα ακουστεί, διατηρώντας την επιδιωκόμενη γλώσσα των ονομάτων και των παραθεμάτων. Για έναν αφηγούμενο οδηγό, μια χρήσιμη φράση είναι: «Επιλέξτε ένα θέμα, ακούστε τη σύντομη εισαγωγή και ανοίξτε την ενότητα που θέλετε να εξερευνήσετε». Αν μια επωνυμία ή ένας ειδικός όρος χρειάζεται συγκεκριμένη ανάγνωση, οι ρυθμίσεις αντικατάστασης του κατασκευαστή μπορούν να δώσουν εναλλακτική γραφή ή προφορά IPA χωρίς να αλλάξει το εμφανιζόμενο αρχικό κείμενο. Μια ξεχωριστή επιλογή κανονικοποίησης κειμένου μετατρέπει γραπτούς αριθμούς, συντομογραφίες και σύμβολα προς την προφορική τους μορφή.\n\n### Οδηγίες ερμηνείας\n\nΟι ενσωματωμένες ετικέτες τοποθετούν ένα συμβάν σε συγκεκριμένο σημείο, όπως παύση, γέλιο, αναστεναγμό ή ανάσα. Οι ετικέτες που περικλείουν κείμενο εφαρμόζουν εκφορά σε ολόκληρη φράση, για παράδειγμα ψίθυρο, έμφαση ή πιο αργό ρυθμό. Τοποθετήστε την οδηγία εκεί όπου το απαιτεί το νόημα και διατηρήστε τις λέξεις ευανάγνωστες. Ο οδηγός συνιστά εύρη ύφους που καλύπτουν ολοκληρωμένες φράσεις και στίξη, αντί για συσσώρευση άσχετων ετικετών.\n\nΓια μια εκφραστική ατάκα χαρακτήρα, προετοιμάστε μαζί την εκφωνούμενη πρόταση και τη μεταβολή της ερμηνείας. Για μια εξήγηση, διατηρήστε σαφή ρυθμό που βοηθά τον ακροατή να παρακολουθήσει τα βήματα. Το τεκμηριωμένο εύρος ταχύτητας ομιλίας είναι από 0.7 έως 1.5, με το 1.0 να αντιστοιχεί στη φυσιολογική εκφορά. Η επιλογή ταχύτητας αλλάζει τον ρυθμό της ομιλίας· δεν αλλάζει τις λέξεις που πρέπει να μεταδώσει η εφαρμογή.\n\n### Ήχος και χρονισμοί\n\nΟ κατασκευαστής τεκμηριώνει έξοδο MP3, WAV, ακατέργαστου PCM, mu-law και A-law. Οι υποστηριζόμενες επιλογές συχνότητας δειγματοληψίας εκτείνονται από 8 kHz έως 48 kHz, με συγκεκριμένες καταγεγραμμένες συχνότητες μεταξύ αυτών των τιμών. Η προεπιλεγμένη ρύθμιση MP3 είναι 24 kHz στα 128 kbit/s. Χρησιμοποιήστε αναπαράσταση ήχου που μπορεί να ερμηνεύσει η προβλεπόμενη συσκευή αναπαραγωγής, το στάδιο επεξεργασίας ή η διαδρομή τηλεφωνίας.\n\nΟι προαιρετικοί χρονισμοί χαρακτήρων αντιστοιχίζουν την επιστρεφόμενη ακολουθία χαρακτήρων με χρόνους έναρξης και λήξης. Χωρίς αντικαταστάσεις προφοράς, αυτή η ακολουθία αντικατοπτρίζει την είσοδο· οι αντικαταστάσεις μπορούν να τη μετατρέψουν στο εκφωνούμενο κείμενο. Μπορούν να υποστηρίξουν εμφάνιση κειμένου για παράλληλη ανάγνωση, επισήμανση ή ευθυγράμμιση με μια οπτική ερμηνεία. Στη ροή πλήρους απόκρισης, το αίτημα χρονισμών αλλάζει την έξοδο σε περίβλημα που περιέχει κωδικοποιημένο ήχο και δεδομένα χρονισμού. Αντιμετωπίστε τους χρονισμούς και τον ήχο ως συνδεδεμένο αποτέλεσμα, ιδιαίτερα όταν η κανονικοποίηση κειμένου αναπτύσσει ένα γραπτό σύμβολο σε πολλές εκφωνούμενες λέξεις.\n\n### Πλήρης παραγωγή ή συνεχής μετάδοση\n\nΟ κατασκευαστής προσφέρει διαδρομή πλήρους αιτήματος και αμφίδρομη συνεχή μετάδοση, στην οποία καταφθάνουν αποσπάσματα κειμένου και επιστρέφουν τμήματα ήχου καθώς παράγεται η φράση. Τεκμηριώνει όριο 60.000 χαρακτήρων για ένα πλήρες αίτημα και για ένα μεμονωμένο απόσπασμα κειμένου σε συνεχή μετάδοση. Η ολοκλήρωση ή η εκκαθάριση μιας φράσης έχει ρητό ρόλο στη ροή συνεχούς μετάδοσης.\n\nΓια μεγαλύτερη αφήγηση, επιλέξτε συνεκτικά όρια αποσπασμάτων και διατηρήστε το κείμενο μαζί με κάθε αποτέλεσμα. Για διαδραστική αναπαραγωγή, διακρίνετε το κείμενο που στάλθηκε για σύνθεση από τον ήχο που έχει ήδη ακούσει ο ακροατής. Το χρήσιμο παραδοτέο είναι ένα εκφωνημένο κείμενο με σκόπιμες οδηγίες ερμηνείας, κατάλληλη μορφή ήχου και δεδομένα χρονισμού όταν τα χρειάζεται η εφαρμογή. Διατηρήστε το κείμενο, την επιλεγμένη φωνή, τις οδηγίες ερμηνείας και τις ρυθμίσεις εξόδου μαζί με τον ήχο, ώστε οι μελλοντικές αναθεωρήσεις να διατηρούν την επιδιωκόμενη εκφορά.",
    "alias_of": null,
    "aliases": [],
    "author": "SpaceXAI",
    "available": null,
    "canonical_model": "x-ai/grok-voice-tts-1.0",
    "capabilities": {
      "context_length": 15000,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.03000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ],
        "summary": "Πλήρης τιμολόγηση της διαμόρφωσης στις λεπτομέρειες."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "x-ai/grok-voice-tts-1.0",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "Μη έγκυρα υποχρεωτικά πεδία, μη έγκυρη αναπαράσταση υλικού ή μη έγκυρη τιμή παραμέτρου",
                "http_status": 400,
                "recovery": "Διορθώστε τα υποδεικνυόμενα πεδία πριν από νέο αίτημα δημιουργίας.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Η απόκριση που επιστράφηκε αναφέρει ότι η λειτουργία ή το αποτέλεσμα χρειάζεται έλεγχο",
                "http_status": null,
                "recovery": "Διατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Διατηρήστε το αρχικό operation_id/X-Client-Request-ID για τη συμφωνία των εγγραφών χωρίς νέα υποβολή· δεν υπάρχει ειδική διαδρομή περιοδικού ελέγχου για τον ήχο."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "Διατηρήστε ολόκληρο το δυαδικό αποτέλεσμα και τις κεφαλίδες. Αν επιστραφεί JSON ή επιστραφούν πολλαπλές έξοδοι, διατηρήστε κάθε στοιχείο δεδομένων και ανακτήστε κάθε πραγματικό υπογεγραμμένο URL πόρου.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3",
              "http_success": 200
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "x-ai/grok-voice-tts-1.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_known": true,
                "maximum_length": 15000,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "χαρακτήρες Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "eve",
                  "ara",
                  "rex",
                  "sal",
                  "leo"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "every field outside exactmodel,input,voice,response_format",
              "stream/speed/reference speech options"
            ]
          },
          "hints": [
            "Επιλέξτε την ακριβή φωνή από αυτό το προφίλ μοντέλου.",
            "Οι χαρακτήρες εισόδου και τα δευτερόλεπτα ήχου αποτελούν διαφορετικές μονάδες μέτρησης."
          ],
          "input": {
            "content_type": "application/json",
            "input": "ακριβές κείμενο UTF-8· πλήθος χαρακτήρων Unicode χωρίς κανονικοποίηση",
            "material_types": [
              "text"
            ],
            "max_input_characters": 15000,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "eve",
              "ara",
              "rex",
              "sal",
              "leo"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "Το πραγματικό task_id που επιστράφηκε ή μια εγγραφή στη βιβλιοθήκη πολυμέσων",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "family": "audio",
            "format": "mp3",
            "http_success": 200,
            "response": "full binary MP3 plus response headers",
            "result": "complete playable owned MP3"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.03000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "declared_tariff_references": [
          {
            "client_selectable": false,
            "key": "5e001ac1780cc15b5437",
            "label": "SpaceXAI: Grok Voice TTS 1.0",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Προεπιλεγμένη διαμόρφωση"
                },
                "label": "SpaceXAI: Grok Voice TTS 1.0 · Προεπιλεγμένη διαμόρφωση",
                "units": [
                  {
                    "amount": "0.000030",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "ed8a12aff2e585a97bdf27e4",
                    "label": "Input characters",
                    "public_unit_label": "per input character",
                    "quantity": "1",
                    "rate_role": "declared_tariff_rate",
                    "side": "in",
                    "unit": "input_character"
                  }
                ]
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"x-ai/grok-voice-tts-1.0\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"eve\", \"ara\", \"rex\", \"sal\", \"leo\"]')\nif voice not in allowed: raise SystemExit(\"Choose an accepted voice ID from this exact model profile\")\np[\"voice\"]=voice\np[\"response_format\"]=\"mp3\"\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "curl",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Select exact voice from this model profile.",
          "Input characters and audio seconds are different meters."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_character": 3e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.03000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "request_model_id": "x-ai/grok-voice-tts-1.0",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.03000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "x-ai/grok-voice-tts-1.0",
        "request_model_id": "x-ai/grok-voice-tts-1.0",
        "route_label": "Ultra"
      }
    ],
    "name": "SpaceXAI: Grok Voice TTS 1.0",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "quoted_unit": "1000000_characters"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000030",
            "amount_unit": "usd_per_input_character",
            "conditions": {
              "quoted_unit": "1000000_characters"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    ],
    "public_id": "x-ai/grok-voice-tts-1.0",
    "short": "Το Grok Text to Speech μετατρέπει το γραπτό κείμενο σε εκφραστικό ήχο, με επιλέξιμες φωνές, ενσωματωμένες οδηγίες ερμηνείας και πολλούς κωδικοποιητές εξόδου. Η τεκμηριωμένη οικογένεια του κατασκευαστή υποστηρίζει πλήρη παραγωγή και συνεχή μετάδοση ομιλίας, καθώς και προαιρετικούς χρονισμούς ανά χαρακτήρα."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Το Grok Text to Speech μετατρέπει το γραπτό κείμενο σε εκφραστικό ήχο, με επιλέξιμες φωνές, ενσωματωμένες οδηγίες ερμηνείας και πολλούς κωδικοποιητές εξόδου. Η τεκμηριωμένη οικογένεια του κατασκευαστή υποστηρίζει πλήρη παραγωγή και συνεχή μετάδοση ομιλίας, καθώς και προαιρετικούς χρονισμούς ανά χαρακτήρα.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "681ce1356899fb8f0deaf244b4d28c465addc7f419fb4224e16c4a1c1e45fb9b",
    "renderer_sha256": "3ed36f7af4f78822bafbd174fdcaed7b698a18a86efe254253d37f1b098a7566"
  },
  "sourceRevision": "8c17b8d55650bb6d73465c6521e0a9fe4c415cee1cffab41248e24f2e7def170"
}
