{
  "aboutHtml": "<p>Το TTS-1 είναι το μοντέλο μετατροπής κειμένου σε ομιλία της OpenAI που έχει βελτιστοποιηθεί για ταχύτητα. Δέχεται τις λέξεις που πρέπει να εκφωνηθούν και παράγει ήχο, αντί για απομαγνητοφώνηση ή γραπτή απάντηση. Τα παραδείγματα του κατασκευαστή περιλαμβάνουν αφήγηση γραπτών άρθρων, παραγωγή ομιλίας σε πολλές γλώσσες και αναπαραγωγή του ήχου καθώς καταφθάνει. Το TTS-1 είναι η επιλογή χαμηλότερης καθυστέρησης σε σύγκριση με το TTS-1 HD· το μοντέλο HD δίνει έμφαση στην ποιότητα εξόδου. Επομένως, η χρήσιμη απόφαση είναι αν για την εργασία έχει μεγαλύτερη σημασία η άμεση αναπαραγωγή ή το προφίλ αφήγησης υψηλότερης ποιότητας.</p><p>Η ροή παραγωγής ομιλίας βασίζεται στο μοντέλο, στο κείμενο εισόδου και στην επιλεγμένη φωνή. Η αναφορά της OpenAI περιορίζει την είσοδο κειμένου σε 4096 χαρακτήρες, ένα όριο χαρακτήρων και όχι παράθυρο συμφραζομένων σε token. Προετοιμάστε το πραγματικό κείμενο πριν από τη σύνθεση: γράψτε τις προτάσεις που πρέπει να ακούσει ο ακροατής, αποσαφηνίστε τις συντομογραφίες και αποφασίστε πώς θα εκφωνηθούν τα ονόματα, οι ποσότητες και οι επικεφαλίδες. Για ένα μεγάλο άρθρο, οργανώστε τις ενότητες σε αποσπάσματα που γίνονται κατανοητά αυτόνομα, αντί να αντιμετωπίζετε ένα μακροσκελές έγγραφο ως ένα μόνο αίτημα ομιλίας.</p><p>Ο τρέχων κατάλογος φωνών της OpenAI ειδικά για το TTS-1 είναι: alloy, ash, coral, echo, fable, onyx, nova, sage και shimmer. Πρόκειται για προκαθορισμένες φωνές· δεν αποτελούν το πλήρες σύνολο φωνών κάθε νεότερου μοντέλου ομιλίας. Οι φωνές είναι βελτιστοποιημένες για αγγλικά, ενώ η πολύγλωσση ομιλία υποστηρίζεται παρέχοντας την είσοδο στη γλώσσα που πρέπει να εκφωνηθεί. Επιλέξτε φωνή με ένα αντιπροσωπευτικό απόσπασμα που έχει το ίδιο λεξιλόγιο και ρυθμό με το τελικό κείμενο. Διατηρήστε αυτή την επιλογή συνεπή μεταξύ συναφών ηχητικών αποσπασμάτων όταν η συνέχεια έχει σημασία.</p><p>Ο ήχος μπορεί να μεταδίδεται συνεχώς σε τμήματα, ώστε η αναπαραγωγή να αρχίζει πριν ολοκληρωθεί η παραγωγή ολόκληρου του αρχείου. Πρόκειται για συνεχή μετάδοση ομιλίας που δημιουργείται από κείμενο, όχι για αμφίδρομη προφορική συζήτηση. Οι τεκμηριωμένες μορφές εξόδου είναι MP3, Opus, AAC, FLAC, WAV και PCM, με προεπιλογή το MP3. Τα MP3 και AAC παρέχουν συμπιεσμένο ήχο· το Opus είναι κατάλληλο για συνεχή μετάδοση και επικοινωνία· το FLAC λειτουργεί χωρίς απώλειες. Το WAV αποφεύγει την αποκωδικοποίηση συμπιεσμένου ήχου και το ακατέργαστο PCM περιέχει δείγματα 24 kHz, 16-bit, με πρόσημο και διάταξη little-endian, χωρίς κεφαλίδα αρχείου. Η OpenAI συνιστά WAV ή PCM όταν ο χρόνος απόκρισης είναι η προτεραιότητα.</p><p>Η αναφορά ομιλίας παρέχει ρύθμιση ταχύτητας από 0.25 έως 4.0, με προεπιλογή 1.0. Το πρόσθετο πεδίο οδηγιών φυσικής γλώσσας δεν λειτουργεί με το TTS-1 και η έξοδος SSE με μορφή συμβάντων δεν υποστηρίζεται για αυτό το μοντέλο. Οι τεκμηριωμένες ρυθμίσεις του είναι το κείμενο, η φωνή, η ταχύτητα και η μορφή ήχου· οι ρυθμίσεις νεότερων μοντέλων για προφορά, συναίσθημα ή ψίθυρο δεν πρέπει να αποδίδονται σε αυτή την έκδοση. Όταν προετοιμάζετε ένα απόσπασμα, επιλέξτε την ταχύτητα ώστε να εξυπηρετεί την καταληπτότητα και έπειτα επιθεωρήστε τις αποδοσμένες λέξεις και παύσεις, αντί να υποθέτετε ότι ο αριθμός χαρακτήρων του κειμένου ορίζει ακριβή διάρκεια.</p><p>Ο οδηγός γλωσσών περιλαμβάνει αγγλικά, ρωσικά, ουκρανικά, γαλλικά, γερμανικά, ισπανικά, πορτογαλικά, ιταλικά, αραβικά, κινεζικά, ιαπωνικά, κορεατικά, χίντι, καζακικά και πολλές άλλες γλώσσες. Η ομιλία ακολουθεί τη γλώσσα του δοσμένου κειμένου. Επομένως, μια οδηγία πολύγλωσσης αφήγησης ξεκινά από το μεταφρασμένο κείμενο και το προβλεπόμενο κοινό· η μετατροπή κειμένου σε ομιλία είναι στάδιο απόδοσης, όχι εντολή μετάφρασης ή επανασυγγραφής. Για μια πρακτική ανακοίνωση, προετοιμάστε το ακριβές μήνυμα και τα ονόματα. Για εκπαιδευτική αφήγηση, κάντε τα όρια των ενοτήτων και τους ορισμούς σαφή στις λέξεις που θα διαβαστούν.</p><p>Ένα ολοκληρωμένο τεχνούργημα μπορεί να είναι μια σύντομη προφορική οδηγία, ένα αφηγούμενο απόσπασμα ή ένα τμήμα ήχου για μεγαλύτερο μοντάζ. Ελέγξτε την προφορά, την πληρότητα, τον ρυθμό και την επιλεγμένη μορφή χρησιμοποιώντας την πραγματική έξοδο. Διατηρήστε το κείμενο μαζί με τον ήχο, ώστε οι επόμενες διορθώσεις να εντοπίζονται στο επηρεαζόμενο απόσπασμα. Οι οδηγίες της OpenAI απαιτούν να ενημερώνονται σαφώς οι ακροατές ότι η φωνή έχει παραχθεί από AI. Αυτή η γνωστοποίηση ανήκει στην εμπειρία ακρόασης· δεν μετατρέπει το TTS-1 σε ηχογράφηση ανθρώπινης φωνής ούτε προσθέτει στο μοντέλο ρυθμίσεις κλωνοποίησης φωνής.</p>",
  "aboutText": "Το TTS-1 είναι το μοντέλο μετατροπής κειμένου σε ομιλία της OpenAI που έχει βελτιστοποιηθεί για ταχύτητα. Δέχεται τις λέξεις που πρέπει να εκφωνηθούν και παράγει ήχο, αντί για απομαγνητοφώνηση ή γραπτή απάντηση. Τα παραδείγματα του κατασκευαστή περιλαμβάνουν αφήγηση γραπτών άρθρων, παραγωγή ομιλίας σε πολλές γλώσσες και αναπαραγωγή του ήχου καθώς καταφθάνει. Το TTS-1 είναι η επιλογή χαμηλότερης καθυστέρησης σε σύγκριση με το TTS-1 HD· το μοντέλο HD δίνει έμφαση στην ποιότητα εξόδου. Επομένως, η χρήσιμη απόφαση είναι αν για την εργασία έχει μεγαλύτερη σημασία η άμεση αναπαραγωγή ή το προφίλ αφήγησης υψηλότερης ποιότητας.\n\nΗ ροή παραγωγής ομιλίας βασίζεται στο μοντέλο, στο κείμενο εισόδου και στην επιλεγμένη φωνή. Η αναφορά της OpenAI περιορίζει την είσοδο κειμένου σε 4096 χαρακτήρες, ένα όριο χαρακτήρων και όχι παράθυρο συμφραζομένων σε token. Προετοιμάστε το πραγματικό κείμενο πριν από τη σύνθεση: γράψτε τις προτάσεις που πρέπει να ακούσει ο ακροατής, αποσαφηνίστε τις συντομογραφίες και αποφασίστε πώς θα εκφωνηθούν τα ονόματα, οι ποσότητες και οι επικεφαλίδες. Για ένα μεγάλο άρθρο, οργανώστε τις ενότητες σε αποσπάσματα που γίνονται κατανοητά αυτόνομα, αντί να αντιμετωπίζετε ένα μακροσκελές έγγραφο ως ένα μόνο αίτημα ομιλίας.\n\nΟ τρέχων κατάλογος φωνών της OpenAI ειδικά για το TTS-1 είναι: alloy, ash, coral, echo, fable, onyx, nova, sage και shimmer. Πρόκειται για προκαθορισμένες φωνές· δεν αποτελούν το πλήρες σύνολο φωνών κάθε νεότερου μοντέλου ομιλίας. Οι φωνές είναι βελτιστοποιημένες για αγγλικά, ενώ η πολύγλωσση ομιλία υποστηρίζεται παρέχοντας την είσοδο στη γλώσσα που πρέπει να εκφωνηθεί. Επιλέξτε φωνή με ένα αντιπροσωπευτικό απόσπασμα που έχει το ίδιο λεξιλόγιο και ρυθμό με το τελικό κείμενο. Διατηρήστε αυτή την επιλογή συνεπή μεταξύ συναφών ηχητικών αποσπασμάτων όταν η συνέχεια έχει σημασία.\n\nΟ ήχος μπορεί να μεταδίδεται συνεχώς σε τμήματα, ώστε η αναπαραγωγή να αρχίζει πριν ολοκληρωθεί η παραγωγή ολόκληρου του αρχείου. Πρόκειται για συνεχή μετάδοση ομιλίας που δημιουργείται από κείμενο, όχι για αμφίδρομη προφορική συζήτηση. Οι τεκμηριωμένες μορφές εξόδου είναι MP3, Opus, AAC, FLAC, WAV και PCM, με προεπιλογή το MP3. Τα MP3 και AAC παρέχουν συμπιεσμένο ήχο· το Opus είναι κατάλληλο για συνεχή μετάδοση και επικοινωνία· το FLAC λειτουργεί χωρίς απώλειες. Το WAV αποφεύγει την αποκωδικοποίηση συμπιεσμένου ήχου και το ακατέργαστο PCM περιέχει δείγματα 24 kHz, 16-bit, με πρόσημο και διάταξη little-endian, χωρίς κεφαλίδα αρχείου. Η OpenAI συνιστά WAV ή PCM όταν ο χρόνος απόκρισης είναι η προτεραιότητα.\n\nΗ αναφορά ομιλίας παρέχει ρύθμιση ταχύτητας από 0.25 έως 4.0, με προεπιλογή 1.0. Το πρόσθετο πεδίο οδηγιών φυσικής γλώσσας δεν λειτουργεί με το TTS-1 και η έξοδος SSE με μορφή συμβάντων δεν υποστηρίζεται για αυτό το μοντέλο. Οι τεκμηριωμένες ρυθμίσεις του είναι το κείμενο, η φωνή, η ταχύτητα και η μορφή ήχου· οι ρυθμίσεις νεότερων μοντέλων για προφορά, συναίσθημα ή ψίθυρο δεν πρέπει να αποδίδονται σε αυτή την έκδοση. Όταν προετοιμάζετε ένα απόσπασμα, επιλέξτε την ταχύτητα ώστε να εξυπηρετεί την καταληπτότητα και έπειτα επιθεωρήστε τις αποδοσμένες λέξεις και παύσεις, αντί να υποθέτετε ότι ο αριθμός χαρακτήρων του κειμένου ορίζει ακριβή διάρκεια.\n\nΟ οδηγός γλωσσών περιλαμβάνει αγγλικά, ρωσικά, ουκρανικά, γαλλικά, γερμανικά, ισπανικά, πορτογαλικά, ιταλικά, αραβικά, κινεζικά, ιαπωνικά, κορεατικά, χίντι, καζακικά και πολλές άλλες γλώσσες. Η ομιλία ακολουθεί τη γλώσσα του δοσμένου κειμένου. Επομένως, μια οδηγία πολύγλωσσης αφήγησης ξεκινά από το μεταφρασμένο κείμενο και το προβλεπόμενο κοινό· η μετατροπή κειμένου σε ομιλία είναι στάδιο απόδοσης, όχι εντολή μετάφρασης ή επανασυγγραφής. Για μια πρακτική ανακοίνωση, προετοιμάστε το ακριβές μήνυμα και τα ονόματα. Για εκπαιδευτική αφήγηση, κάντε τα όρια των ενοτήτων και τους ορισμούς σαφή στις λέξεις που θα διαβαστούν.\n\nΈνα ολοκληρωμένο τεχνούργημα μπορεί να είναι μια σύντομη προφορική οδηγία, ένα αφηγούμενο απόσπασμα ή ένα τμήμα ήχου για μεγαλύτερο μοντάζ. Ελέγξτε την προφορά, την πληρότητα, τον ρυθμό και την επιλεγμένη μορφή χρησιμοποιώντας την πραγματική έξοδο. Διατηρήστε το κείμενο μαζί με τον ήχο, ώστε οι επόμενες διορθώσεις να εντοπίζονται στο επηρεαζόμενο απόσπασμα. Οι οδηγίες της OpenAI απαιτούν να ενημερώνονται σαφώς οι ακροατές ότι η φωνή έχει παραχθεί από AI. Αυτή η γνωστοποίηση ανήκει στην εμπειρία ακρόασης· δεν μετατρέπει το TTS-1 σε ηχογράφηση ανθρώπινης φωνής ούτε προσθέτει στο μοντέλο ρυθμίσεις κλωνοποίησης φωνής.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "7dae7451016fbe77e7c6c46c46fccefd6978ceef8defeb2c22adf70072eed3f5",
    "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\">tts-1</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>Άλλα /</span><code>openai/tts-1</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|openai%2Ftts-1\">Σύνθεση ομιλίας</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\">Το TTS-1 μετατρέπει έτοιμο κείμενο σε ομιλία σε μορφή ήχου, με επιλέξιμες φωνές, ταχύτητα αναπαραγωγής και μορφές εξόδου. Η OpenAI βελτιστοποιεί αυτή την έκδοση για παραγωγή ομιλίας με χαμηλότερη καθυστέρηση, καθιστώντας τη πρακτική επιλογή για εκφωνήσεις με γρήγορη απόκριση, σύντομη αφήγηση και συνεχή μετάδοση ενός ήδη γραμμένου κειμένου.</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>Το TTS-1 είναι το μοντέλο μετατροπής κειμένου σε ομιλία της OpenAI που έχει βελτιστοποιηθεί για ταχύτητα. Δέχεται τις λέξεις που πρέπει να εκφωνηθούν και παράγει ήχο, αντί για απομαγνητοφώνηση ή γραπτή απάντηση. Τα παραδείγματα του κατασκευαστή περιλαμβάνουν αφήγηση γραπτών άρθρων, παραγωγή ομιλίας σε πολλές γλώσσες και αναπαραγωγή του ήχου καθώς καταφθάνει. Το TTS-1 είναι η επιλογή χαμηλότερης καθυστέρησης σε σύγκριση με το TTS-1 HD· το μοντέλο HD δίνει έμφαση στην ποιότητα εξόδου. Επομένως, η χρήσιμη απόφαση είναι αν για την εργασία έχει μεγαλύτερη σημασία η άμεση αναπαραγωγή ή το προφίλ αφήγησης υψηλότερης ποιότητας.</p><p>Η ροή παραγωγής ομιλίας βασίζεται στο μοντέλο, στο κείμενο εισόδου και στην επιλεγμένη φωνή. Η αναφορά της OpenAI περιορίζει την είσοδο κειμένου σε 4096 χαρακτήρες, ένα όριο χαρακτήρων και όχι παράθυρο συμφραζομένων σε token. Προετοιμάστε το πραγματικό κείμενο πριν από τη σύνθεση: γράψτε τις προτάσεις που πρέπει να ακούσει ο ακροατής, αποσαφηνίστε τις συντομογραφίες και αποφασίστε πώς θα εκφωνηθούν τα ονόματα, οι ποσότητες και οι επικεφαλίδες. Για ένα μεγάλο άρθρο, οργανώστε τις ενότητες σε αποσπάσματα που γίνονται κατανοητά αυτόνομα, αντί να αντιμετωπίζετε ένα μακροσκελές έγγραφο ως ένα μόνο αίτημα ομιλίας.</p><p>Ο τρέχων κατάλογος φωνών της OpenAI ειδικά για το TTS-1 είναι: alloy, ash, coral, echo, fable, onyx, nova, sage και shimmer. Πρόκειται για προκαθορισμένες φωνές· δεν αποτελούν το πλήρες σύνολο φωνών κάθε νεότερου μοντέλου ομιλίας. Οι φωνές είναι βελτιστοποιημένες για αγγλικά, ενώ η πολύγλωσση ομιλία υποστηρίζεται παρέχοντας την είσοδο στη γλώσσα που πρέπει να εκφωνηθεί. Επιλέξτε φωνή με ένα αντιπροσωπευτικό απόσπασμα που έχει το ίδιο λεξιλόγιο και ρυθμό με το τελικό κείμενο. Διατηρήστε αυτή την επιλογή συνεπή μεταξύ συναφών ηχητικών αποσπασμάτων όταν η συνέχεια έχει σημασία.</p><p>Ο ήχος μπορεί να μεταδίδεται συνεχώς σε τμήματα, ώστε η αναπαραγωγή να αρχίζει πριν ολοκληρωθεί η παραγωγή ολόκληρου του αρχείου. Πρόκειται για συνεχή μετάδοση ομιλίας που δημιουργείται από κείμενο, όχι για αμφίδρομη προφορική συζήτηση. Οι τεκμηριωμένες μορφές εξόδου είναι MP3, Opus, AAC, FLAC, WAV και PCM, με προεπιλογή το MP3. Τα MP3 και AAC παρέχουν συμπιεσμένο ήχο· το Opus είναι κατάλληλο για συνεχή μετάδοση και επικοινωνία· το FLAC λειτουργεί χωρίς απώλειες. Το WAV αποφεύγει την αποκωδικοποίηση συμπιεσμένου ήχου και το ακατέργαστο PCM περιέχει δείγματα 24 kHz, 16-bit, με πρόσημο και διάταξη little-endian, χωρίς κεφαλίδα αρχείου. Η OpenAI συνιστά WAV ή PCM όταν ο χρόνος απόκρισης είναι η προτεραιότητα.</p><p>Η αναφορά ομιλίας παρέχει ρύθμιση ταχύτητας από 0.25 έως 4.0, με προεπιλογή 1.0. Το πρόσθετο πεδίο οδηγιών φυσικής γλώσσας δεν λειτουργεί με το TTS-1 και η έξοδος SSE με μορφή συμβάντων δεν υποστηρίζεται για αυτό το μοντέλο. Οι τεκμηριωμένες ρυθμίσεις του είναι το κείμενο, η φωνή, η ταχύτητα και η μορφή ήχου· οι ρυθμίσεις νεότερων μοντέλων για προφορά, συναίσθημα ή ψίθυρο δεν πρέπει να αποδίδονται σε αυτή την έκδοση. Όταν προετοιμάζετε ένα απόσπασμα, επιλέξτε την ταχύτητα ώστε να εξυπηρετεί την καταληπτότητα και έπειτα επιθεωρήστε τις αποδοσμένες λέξεις και παύσεις, αντί να υποθέτετε ότι ο αριθμός χαρακτήρων του κειμένου ορίζει ακριβή διάρκεια.</p><p>Ο οδηγός γλωσσών περιλαμβάνει αγγλικά, ρωσικά, ουκρανικά, γαλλικά, γερμανικά, ισπανικά, πορτογαλικά, ιταλικά, αραβικά, κινεζικά, ιαπωνικά, κορεατικά, χίντι, καζακικά και πολλές άλλες γλώσσες. Η ομιλία ακολουθεί τη γλώσσα του δοσμένου κειμένου. Επομένως, μια οδηγία πολύγλωσσης αφήγησης ξεκινά από το μεταφρασμένο κείμενο και το προβλεπόμενο κοινό· η μετατροπή κειμένου σε ομιλία είναι στάδιο απόδοσης, όχι εντολή μετάφρασης ή επανασυγγραφής. Για μια πρακτική ανακοίνωση, προετοιμάστε το ακριβές μήνυμα και τα ονόματα. Για εκπαιδευτική αφήγηση, κάντε τα όρια των ενοτήτων και τους ορισμούς σαφή στις λέξεις που θα διαβαστούν.</p><p>Ένα ολοκληρωμένο τεχνούργημα μπορεί να είναι μια σύντομη προφορική οδηγία, ένα αφηγούμενο απόσπασμα ή ένα τμήμα ήχου για μεγαλύτερο μοντάζ. Ελέγξτε την προφορά, την πληρότητα, τον ρυθμό και την επιλεγμένη μορφή χρησιμοποιώντας την πραγματική έξοδο. Διατηρήστε το κείμενο μαζί με τον ήχο, ώστε οι επόμενες διορθώσεις να εντοπίζονται στο επηρεαζόμενο απόσπασμα. Οι οδηγίες της OpenAI απαιτούν να ενημερώνονται σαφώς οι ακροατές ότι η φωνή έχει παραχθεί από AI. Αυτή η γνωστοποίηση ανήκει στην εμπειρία ακρόασης· δεν μετατρέπει το TTS-1 σε ηχογράφηση ανθρώπινης φωνής ούτε προσθέτει στο μοντέλο ρυθμίσεις κλωνοποίησης φωνής.</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>openai/tts-1</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>Μέγιστο μήκος: 4.096</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>alloy</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</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>alloy</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>4096</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><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>—</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>—</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><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Ανά αίτημα</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>—</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Είσοδος</span> <b>$0</b> <span class=\"price-unit\">ανά αίτημα</span></div></td></tr></tbody></table></div></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-2179-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2179-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-2179-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2179-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;openai/tts-1&quot;, &quot;input&quot;: &quot;Good afternoon! This is a short voice take.&quot;, &quot;voice&quot;: &quot;alloy&quot;}&#39;)\n\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-2180-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2180-panel-0\" aria-selected=\"true\" tabindex=\"0\">Βιβλιοθήκη πολυμέσων</button><button class=\"cg-tab\" id=\"model-code-2180-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2180-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Κατάσταση εργασίας</button><button class=\"cg-tab\" id=\"model-code-2180-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2180-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-2180-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2180-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-2180-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2180-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-2180-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2180-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=openai%2Ftts-1&amp;route=Ultra&amp;caller=openai%2Ftts-1&amp;fmt=speech\"><code>openai/tts-1</code></a></span></p><h4>Εναλλακτικές διαδρομές μεθόδων</h4><p class=\"note-s\">Χρησιμοποιήστε τις διαδρομές μεθόδων που εμφανίζονται παραπάνω.</p><h4>Σχετικά ID μοντέλων</h4><p class=\"note-s\"><a href=\"#m=openai%2Ftts-1&amp;route=Ultra&amp;caller=openai%2Ftts-1&amp;fmt=speech\"><code>openai/tts-1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "openai/tts-1",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "openai/tts-1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|openai%2Ftts-1",
      "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"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/tts-1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_length": 4096,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "χαρακτήρες Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "alloy"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "response_format field; omit it",
              "other options"
            ]
          },
          "hints": [
            "Επιλέξτε την ακριβή φωνή από αυτό το προφίλ μοντέλου.",
            "Οι χαρακτήρες εισόδου και τα δευτερόλεπτα ήχου αποτελούν διαφορετικές μονάδες μέτρησης."
          ],
          "input": {
            "content_type": "application/json",
            "input": "ακριβές κείμενο UTF-8· πλήθος χαρακτήρων Unicode χωρίς κανονικοποίηση",
            "material_types": [
              "text"
            ],
            "max_input_characters": 4096,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice"
            ],
            "voice_ids": [
              "alloy"
            ]
          },
          "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"
              }
            ]
          },
          {
            "dimensions": {
              "billing_quantity": "one request"
            },
            "label": "Per request",
            "units": [
              {
                "amount": "0",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "per_request",
                "label": "per request",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "public_unit_label": "per request",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "per_request"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"openai/tts-1\", \"input\": \"Good afternoon! This is a short voice take.\", \"voice\": \"alloy\"}')\n\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": 0,
          "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"
              }
            ]
          },
          {
            "dimensions": {
              "billing_quantity": "one request"
            },
            "label": "Per request",
            "units": [
              {
                "amount": "0",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "per_request",
                "label": "per request",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "public_unit_label": "per request",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "per_request"
              }
            ]
          }
        ],
        "request_model_id": "openai/tts-1",
        "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"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "per_request",
            "label": "per request",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "public_unit_label": "per request",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "per_request"
          }
        ]
      }
    }
  ],
  "model_id": "openai/tts-1",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "aeae8357159eedd23a070af5f9f620832fae732f26e99c5f9688eaf84c1736dc",
    "input_html_sha256": "3c6d93b8a1ac9f4fc3af36115ed6bb77bfcbb208a05e073c8b8aa64a2cbf0fb6",
    "private_audit_sha256": "aa63fdcbc9202a7dc94de3b6319083ca4b0670dca423810b79906fb7abb471b3",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/el/openai-tts-1/",
    "description": "Το TTS-1 μετατρέπει έτοιμο κείμενο σε ομιλία σε μορφή ήχου, με επιλέξιμες φωνές, ταχύτητα αναπαραγωγής και μορφές εξόδου. Η OpenAI βελτιστοποιεί αυτή την έκδοση για παραγωγή ομιλίας με χαμηλότερη καθυστέρηση, καθιστώντας τη πρακτική επιλογή για εκφωνήσεις με γρήγορη απόκριση, σύντομη αφήγηση και συνεχή μετάδοση ενός ήδη γραμμένου κειμένου.",
    "locale": "el",
    "md_url": "https://ailoot.ai/models/el/openai-tts-1/index.md",
    "title": "tts-1 — Ailoot",
    "url": "https://ailoot.ai/models/el/openai-tts-1/"
  },
  "rawModel": {
    "about": "Το TTS-1 είναι το μοντέλο μετατροπής κειμένου σε ομιλία της OpenAI που έχει βελτιστοποιηθεί για ταχύτητα. Δέχεται τις λέξεις που πρέπει να εκφωνηθούν και παράγει ήχο, αντί για απομαγνητοφώνηση ή γραπτή απάντηση. Τα παραδείγματα του κατασκευαστή περιλαμβάνουν αφήγηση γραπτών άρθρων, παραγωγή ομιλίας σε πολλές γλώσσες και αναπαραγωγή του ήχου καθώς καταφθάνει. Το TTS-1 είναι η επιλογή χαμηλότερης καθυστέρησης σε σύγκριση με το TTS-1 HD· το μοντέλο HD δίνει έμφαση στην ποιότητα εξόδου. Επομένως, η χρήσιμη απόφαση είναι αν για την εργασία έχει μεγαλύτερη σημασία η άμεση αναπαραγωγή ή το προφίλ αφήγησης υψηλότερης ποιότητας.\n\nΗ ροή παραγωγής ομιλίας βασίζεται στο μοντέλο, στο κείμενο εισόδου και στην επιλεγμένη φωνή. Η αναφορά της OpenAI περιορίζει την είσοδο κειμένου σε 4096 χαρακτήρες, ένα όριο χαρακτήρων και όχι παράθυρο συμφραζομένων σε token. Προετοιμάστε το πραγματικό κείμενο πριν από τη σύνθεση: γράψτε τις προτάσεις που πρέπει να ακούσει ο ακροατής, αποσαφηνίστε τις συντομογραφίες και αποφασίστε πώς θα εκφωνηθούν τα ονόματα, οι ποσότητες και οι επικεφαλίδες. Για ένα μεγάλο άρθρο, οργανώστε τις ενότητες σε αποσπάσματα που γίνονται κατανοητά αυτόνομα, αντί να αντιμετωπίζετε ένα μακροσκελές έγγραφο ως ένα μόνο αίτημα ομιλίας.\n\nΟ τρέχων κατάλογος φωνών της OpenAI ειδικά για το TTS-1 είναι: alloy, ash, coral, echo, fable, onyx, nova, sage και shimmer. Πρόκειται για προκαθορισμένες φωνές· δεν αποτελούν το πλήρες σύνολο φωνών κάθε νεότερου μοντέλου ομιλίας. Οι φωνές είναι βελτιστοποιημένες για αγγλικά, ενώ η πολύγλωσση ομιλία υποστηρίζεται παρέχοντας την είσοδο στη γλώσσα που πρέπει να εκφωνηθεί. Επιλέξτε φωνή με ένα αντιπροσωπευτικό απόσπασμα που έχει το ίδιο λεξιλόγιο και ρυθμό με το τελικό κείμενο. Διατηρήστε αυτή την επιλογή συνεπή μεταξύ συναφών ηχητικών αποσπασμάτων όταν η συνέχεια έχει σημασία.\n\nΟ ήχος μπορεί να μεταδίδεται συνεχώς σε τμήματα, ώστε η αναπαραγωγή να αρχίζει πριν ολοκληρωθεί η παραγωγή ολόκληρου του αρχείου. Πρόκειται για συνεχή μετάδοση ομιλίας που δημιουργείται από κείμενο, όχι για αμφίδρομη προφορική συζήτηση. Οι τεκμηριωμένες μορφές εξόδου είναι MP3, Opus, AAC, FLAC, WAV και PCM, με προεπιλογή το MP3. Τα MP3 και AAC παρέχουν συμπιεσμένο ήχο· το Opus είναι κατάλληλο για συνεχή μετάδοση και επικοινωνία· το FLAC λειτουργεί χωρίς απώλειες. Το WAV αποφεύγει την αποκωδικοποίηση συμπιεσμένου ήχου και το ακατέργαστο PCM περιέχει δείγματα 24 kHz, 16-bit, με πρόσημο και διάταξη little-endian, χωρίς κεφαλίδα αρχείου. Η OpenAI συνιστά WAV ή PCM όταν ο χρόνος απόκρισης είναι η προτεραιότητα.\n\nΗ αναφορά ομιλίας παρέχει ρύθμιση ταχύτητας από 0.25 έως 4.0, με προεπιλογή 1.0. Το πρόσθετο πεδίο οδηγιών φυσικής γλώσσας δεν λειτουργεί με το TTS-1 και η έξοδος SSE με μορφή συμβάντων δεν υποστηρίζεται για αυτό το μοντέλο. Οι τεκμηριωμένες ρυθμίσεις του είναι το κείμενο, η φωνή, η ταχύτητα και η μορφή ήχου· οι ρυθμίσεις νεότερων μοντέλων για προφορά, συναίσθημα ή ψίθυρο δεν πρέπει να αποδίδονται σε αυτή την έκδοση. Όταν προετοιμάζετε ένα απόσπασμα, επιλέξτε την ταχύτητα ώστε να εξυπηρετεί την καταληπτότητα και έπειτα επιθεωρήστε τις αποδοσμένες λέξεις και παύσεις, αντί να υποθέτετε ότι ο αριθμός χαρακτήρων του κειμένου ορίζει ακριβή διάρκεια.\n\nΟ οδηγός γλωσσών περιλαμβάνει αγγλικά, ρωσικά, ουκρανικά, γαλλικά, γερμανικά, ισπανικά, πορτογαλικά, ιταλικά, αραβικά, κινεζικά, ιαπωνικά, κορεατικά, χίντι, καζακικά και πολλές άλλες γλώσσες. Η ομιλία ακολουθεί τη γλώσσα του δοσμένου κειμένου. Επομένως, μια οδηγία πολύγλωσσης αφήγησης ξεκινά από το μεταφρασμένο κείμενο και το προβλεπόμενο κοινό· η μετατροπή κειμένου σε ομιλία είναι στάδιο απόδοσης, όχι εντολή μετάφρασης ή επανασυγγραφής. Για μια πρακτική ανακοίνωση, προετοιμάστε το ακριβές μήνυμα και τα ονόματα. Για εκπαιδευτική αφήγηση, κάντε τα όρια των ενοτήτων και τους ορισμούς σαφή στις λέξεις που θα διαβαστούν.\n\nΈνα ολοκληρωμένο τεχνούργημα μπορεί να είναι μια σύντομη προφορική οδηγία, ένα αφηγούμενο απόσπασμα ή ένα τμήμα ήχου για μεγαλύτερο μοντάζ. Ελέγξτε την προφορά, την πληρότητα, τον ρυθμό και την επιλεγμένη μορφή χρησιμοποιώντας την πραγματική έξοδο. Διατηρήστε το κείμενο μαζί με τον ήχο, ώστε οι επόμενες διορθώσεις να εντοπίζονται στο επηρεαζόμενο απόσπασμα. Οι οδηγίες της OpenAI απαιτούν να ενημερώνονται σαφώς οι ακροατές ότι η φωνή έχει παραχθεί από AI. Αυτή η γνωστοποίηση ανήκει στην εμπειρία ακρόασης· δεν μετατρέπει το TTS-1 σε ηχογράφηση ανθρώπινης φωνής ούτε προσθέτει στο μοντέλο ρυθμίσεις κλωνοποίησης φωνής.",
    "alias_of": null,
    "aliases": [],
    "author": "Other",
    "available": null,
    "canonical_model": "openai/tts-1",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [],
      "manufacturer_output": []
    },
    "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"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "per_request",
            "label": "per request",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "public_unit_label": "per request",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "per_request"
          }
        ],
        "summary": "Πλήρης τιμολόγηση της διαμόρφωσης στις λεπτομέρειες."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "openai/tts-1",
    "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"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/tts-1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_length": 4096,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "χαρακτήρες Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "alloy"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "response_format field; omit it",
              "other options"
            ]
          },
          "hints": [
            "Επιλέξτε την ακριβή φωνή από αυτό το προφίλ μοντέλου.",
            "Οι χαρακτήρες εισόδου και τα δευτερόλεπτα ήχου αποτελούν διαφορετικές μονάδες μέτρησης."
          ],
          "input": {
            "content_type": "application/json",
            "input": "ακριβές κείμενο UTF-8· πλήθος χαρακτήρων Unicode χωρίς κανονικοποίηση",
            "material_types": [
              "text"
            ],
            "max_input_characters": 4096,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice"
            ],
            "voice_ids": [
              "alloy"
            ]
          },
          "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"
              }
            ]
          },
          {
            "dimensions": {
              "billing_quantity": "one request"
            },
            "label": "Per request",
            "units": [
              {
                "amount": "0",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "per_request",
                "label": "per request",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "public_unit_label": "per request",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "per_request"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"openai/tts-1\", \"input\": \"Good afternoon! This is a short voice take.\", \"voice\": \"alloy\"}')\n\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": 0,
          "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"
              }
            ]
          },
          {
            "dimensions": {
              "billing_quantity": "one request"
            },
            "label": "Per request",
            "units": [
              {
                "amount": "0",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "per_request",
                "label": "per request",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "public_unit_label": "per request",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "per_request"
              }
            ]
          }
        ],
        "request_model_id": "openai/tts-1",
        "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"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "per_request",
            "label": "per request",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "public_unit_label": "per request",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "per_request"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "openai/tts-1",
        "request_model_id": "openai/tts-1",
        "route_label": "Ultra"
      }
    ],
    "name": "tts-1",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "public_id": "openai/tts-1",
    "short": "Το TTS-1 μετατρέπει έτοιμο κείμενο σε ομιλία σε μορφή ήχου, με επιλέξιμες φωνές, ταχύτητα αναπαραγωγής και μορφές εξόδου. Η OpenAI βελτιστοποιεί αυτή την έκδοση για παραγωγή ομιλίας με χαμηλότερη καθυστέρηση, καθιστώντας τη πρακτική επιλογή για εκφωνήσεις με γρήγορη απόκριση, σύντομη αφήγηση και συνεχή μετάδοση ενός ήδη γραμμένου κειμένου."
  },
  "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": "Το TTS-1 μετατρέπει έτοιμο κείμενο σε ομιλία σε μορφή ήχου, με επιλέξιμες φωνές, ταχύτητα αναπαραγωγής και μορφές εξόδου. Η OpenAI βελτιστοποιεί αυτή την έκδοση για παραγωγή ομιλίας με χαμηλότερη καθυστέρηση, καθιστώντας τη πρακτική επιλογή για εκφωνήσεις με γρήγορη απόκριση, σύντομη αφήγηση και συνεχή μετάδοση ενός ήδη γραμμένου κειμένου.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "894fa3eb35020560d542b51021ef0df8e160f688cc05bc16bd26f9ae4bc42012",
    "renderer_sha256": "3ed36f7af4f78822bafbd174fdcaed7b698a18a86efe254253d37f1b098a7566"
  },
  "sourceRevision": "a89babec615752497f9ef7a97c673259ffd5d1b6c496af2005ecf6cf8317163a"
}
