Ceci est une note d'introduction du service de synthèse vocale "** Cloud Text-to-Speech **" fourni par Google. J'ai expliqué le plus en détail possible le flux entre l'activation du service API et l'obtention du fichier d'authentification et son appel depuis votre propre programme (C # ou Python).
En gros, examinez le contenu du "[Quickstart: Use Client Library] officiel (https://cloud.google.com/text-to-speech/docs/quickstart-client-libraries?hl=ja)" Il est expliqué par un plan (notez que les étapes qui semblent inutiles sont sautées).
** Cloud Text-to-Speech ** est un service cloud qui génère ** des données audio lues à voix haute ** (.mp3) à partir de données texte (OK en japonais). Il est possible de produire une voix naturelle assez proche des humains. Vous pouvez vérifier la qualité en donnant n'importe quel texte (le japonais est également OK) depuis ici.
Inscrivez-vous en tant qu'utilisateur de Google Cloud (https://cloud.google.com/?hl=ja).
Vous pouvez utiliser votre compte Google pour un essai gratuit. Cependant, une carte de crédit est requise au moment de l'inscription. Cependant, après la fin de la période, il ne sera pas automatiquement transféré sur un compte payant **, et même si vous passez à un compte payé, les frais seront très raisonnables (personnellement). Inscrivons-nous sans trop d'efforts.
Ci-dessous, nous allons procéder à l'explication comme ** enregistré ** sur Google Cloud.
Accédez à Google Cloud Platform et connectez-vous.
Une boîte de dialogue s'affiche. Sélectionnez "** Nouveau projet **".
Entrez un nom de projet approprié (ici, Text To Speech 20xxx
) et cliquez sur" ** Créer ** ".
Vous serez redirigé vers le tableau de bord, alors ** basculez vers le projet que vous venez de créer **.
Cliquez sur le menu en haut à gauche pour accéder à "** API et services ", " Tableau de bord **".
Sélectionnez ** Activer les API et les services **.
Tapez Text to Speech dans la zone de texte.
Sélectionnez ** API Cloud Text-to-Speech **.
Sélectionnez ** Activer **.
Sélectionnez «** Créer les informations d'identification **» requis pour utiliser le service à partir de votre propre programme.
Vous serez redirigé vers l'écran «** Ajouter des informations d'identification au projet », sélectionnez « API Cloud Text-to-Speech » dans la liste déroulante ci-dessous, puis « Authentification requise» Cliquez sur "Information **".
L'affichage changera, alors sélectionnez "** Non, non utilisé " et cliquez à nouveau sur " Informations d'identification requises **".
Entrez un ** nom de compte de service ** approprié (ici, test
). ** Aucun rôle n'est sélectionné **. De plus, «l'ID de compte de service» est généré automatiquement. Sélectionnez ** Suivant **.
La boîte de dialogue suivante s'affiche. Sélectionnez "** Créer sans rôle **".
La boîte de dialogue suivante s'affiche et le ** fichier JSON ** contenant les informations d'authentification est téléchargé sur votre PC.
Supposons que vous renommez ce fichier en " credentials.json
"et le placez dans" C: \ Users \ xxx \ Desktop
".
Dans le [Quick Start] officiel (https://cloud.google.com/text-to-speech/docs/quickstart-client-libraries?hl=ja), le chemin de ce fichier est défini sur ** variable d'environnement **. Explique comment s'inscrire en tant que GOOGLE_APPLICATION_CREDENTIALS
et se référer aux informations via les variables d'environnement dans le programme. Par contre, ** Ici, la méthode consiste à se référer à l'information en spécifiant directement le chemin du programme sans l'enregistrer dans la variable d'environnement </ font> **.
Démarrez VisualStudio et sélectionnez [** Fichier ] - [ Nouveau ] - [ Projet ], puis sélectionnez " Visual C # " - " Console App (.NET Core) * *"Choisir.
Sélectionnez [** Outils ] - [ NuGet Package Manager ] - [ Package Manager Console **] dans le menu. Entrez ʻInstall-Package Google.Cloud.TextToSpeech.V1 -Pre` dans la console pour l'exécuter.
PM> Install-Package Google.Cloud.TextToSpeech.V1 -Pre
Réécrivez le contenu de Program.cs
comme suit.
Program.cs
using System;
using System.IO;
using Google.Cloud.TextToSpeech.V1;
using System.Diagnostics;
public class QuickStart {
public static void Main(string[] args) {
var credentialsFilePath = @"C:\Users\xxx\Desktop\credentials.json";
var textToSpeechClientBuilder = new TextToSpeechClientBuilder() {
CredentialsPath = credentialsFilePath
};
var client = textToSpeechClientBuilder.Build();
//Paramètres de texte en lecture à voix haute
SynthesisInput input = new SynthesisInput {
Text = "La destination est Nihonbashi."
};
//Réglage du type de voix
VoiceSelectionParams voice = new VoiceSelectionParams {
Name = "ja-JP-Wavenet-D",
LanguageCode = "ja-JP",
SsmlGender = SsmlVoiceGender.Neutral
};
//Paramètres de sortie audio
AudioConfig config = new AudioConfig {
AudioEncoding = AudioEncoding.Mp3,
Pitch = -2.0
};
// Text-to-Générer une demande de parole
var response = client.SynthesizeSpeech(new SynthesizeSpeechRequest {
Input = input,
Voice = voice,
AudioConfig = config
});
// Text-to-Enregistrement de la réponse vocale (fichier vocal)
var fileName = DateTime.Now.ToString("yyyy-MM-dd_HHmmss") + ".mp3";
using (Stream output = File.Create(fileName)) {
response.AudioContent.WriteTo(output);
Console.WriteLine($"Contenu audio'{fileName}'Enregistré sous.");
}
Console.WriteLine("Voulez-vous ouvrir le dossier dans lequel vous exportez le fichier?[Y]/n");
var k = Console.ReadKey();
if (k.Key != ConsoleKey.N && k.Key != ConsoleKey.Escape) {
Process.Start("explorer.exe", Directory.GetCurrentDirectory());
}
}
}
Une fois exécuté, un fichier MP3 indiquant "Mokukichi est Nihonbashi" sera généré.
De plus, le ** langage de balisage de synthèse vocale ** (SSML) est également pris en charge, et si vous le modifiez comme suit
Il dit: "Mokukichi n'est pas ** Nihonbashi **, mais ** Nipponbashi **." Vous pouvez également insérer des ** intervalles **, comme par <break time =" 200ms "/>
.
Format SSML
SynthesisInput input = new SynthesisInput {
Ssml = "<speak>La destination n'est pas Nihonbashi,<sub alias='Nipponbashi'>Nihonbashi</sub>est.</speak>".Replace("'", "\"")
};
pip install --upgrade google-cloud-texttospeech
python
from datetime import datetime
from pytz import timezone
from google.cloud import texttospeech
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file('credentials.json')
client = texttospeech.TextToSpeechClient(credentials=credentials)
synthesis_input = texttospeech.types.SynthesisInput(
text='La destination est Akihabara.')
voice = texttospeech.types.VoiceSelectionParams(
language_code='ja-JP',
name='ja-JP-Wavenet-D',
ssml_gender=texttospeech.enums.SsmlVoiceGender.NEUTRAL)
audio_config = texttospeech.types.AudioConfig(
audio_encoding=texttospeech.enums.AudioEncoding.MP3,
pitch = -2.0
)
response = client.synthesize_speech(synthesis_input, voice, audio_config)
now = datetime.now(timezone('Asia/Tokyo'))
filename = now.strftime('%Y-%m-%d_%H%M%S.mp3')
with open(filename, 'wb') as out:
out.write(response.audio_content)
print(f'Audio content written to file {filename}')
Recommended Posts