web-dev-qa-db-fra.com

son-à-voix-naturelle

Premièrement, je sais que cette question a été posée, Texte à résonance naturelle?

Je suis après une sorte de moteur de synthèse vocale, mais pour convertir un ebook/texte complet. En termes simples, je ne dispose plus de suffisamment de temps pour lire et lire, mais je voyage beaucoup, alors écoutez des livres audio et essayez toutes les suggestions mentionnées ... mais ...

J'aime beaucoup la suggestion de user85321 et son petit script, sa compacité et sa pertinence, mais pour une raison quelconque, tout texte plus grand que quelques paragraphes se termine par un message d'erreur relatif à de nombreux arguments:

bash: ./speech.sh: Argument list too long

Existe-t-il un moyen de modifier le script ou d’ajouter au script pour empêcher cela?

J'aime la voix pico2wav, il y a moins de lag/pause comme avec googleTTs, oui il y a le problème d'orthographe étrange "THE" au lieu de "The", mais dans l'ensemble, le discours semble couler un peu mieux et je le préfère au festival/embrola.

J'ai même essayé les scripts utilisant les GoogleTT énumérés dans le message d'origine, y compris celui qui a le repli d'utiliser pico2wav en tant que sauvegarde hors connexion. Malheureusement, même après avoir scindé le livre en plusieurs morceaux, ils s’arrêtent à des intervalles aléatoires. Tenter de reconstituer des morceaux de langage au hasard est donc un PITA royal.

Mon dernier port d'escale était le plugin read text de libreoffice (qui utilise pico2wav). Il semble que le problème soit le même avec les arguments qui surviennent après un certain temps.

Après avoir parcouru cette zone au cours des derniers mois, je me trouve maintenant devant un mur de briques; toute aide ou suggestion serait donc la bienvenue.

Merci d'avoir lu mon gribouillage.

3
Jan Matulewicz

Pour quelque raison que ce soit, pico2wave n'accepte que les entrées en tant qu'arguments. Par conséquent, la longueur du texte qu'il peut traiter simultanément est limitée par la taille maximale de l'argument. Vous pourriez peut-être utiliser xargs pour scinder le texte en parties ne dépassant pas cette limite. Exécutez ce script en utilisant xargs de cette façon:

xargs -a input.txt ./speech.sh

Option xargs pertinente que vous n’aurez pas besoin d’utiliser:

--max-chars=max-chars
-s max-chars
      Use at most max-chars characters per command line, including the
      command  and  initial-arguments and the terminating nulls at the
      ends of the argument strings.   The  largest  allowed  value  is
      system-dependent, and is calculated as the argument length limit
      for exec, less the size of your environment, less 2048 bytes  of
      headroom.   If this value is more than 128KiB, 128Kib is used as
      the default value; otherwise, the default value is the  maximum.
      1KiB is 1024 bytes.
1
muru

J'ai eu un problème similaire et rencontré le script suivant qui a fonctionné pour moi: https://github.com/GwadaLUG/pico-read-speaker Ceci est un script python divisera le fichier texte en morceaux et les transmettra à pico2wave. Il combine ensuite tous les fichiers .wav en sortie dans un fichier .wav géant.

0
Jeff