Как реализовать Google текст в речь в электронном? - PullRequest
0 голосов
/ 16 апреля 2020

Я использую официальный модуль @ google-cloud / text-to-speech в Electron. Моя настройка:

  • Электрон 4.0.0
  • Узел 10.11.0

Я следовал всем инструкциям этой страницы но я продолжаю иметь ошибку, которую не могу исправить.

Uncaught (in promise) NodeError: The "path" argument must be of type string. Received type object
    at assertPath (path.js:39:11)
    at Object.basename (path.js:749:5)
    at GrpcClient.loadProto (C:\ELECTRON\new2\node_modules\google-gax\build\src\grpc.js:119:29)
    at new TextToSpeechClient (C:\ELECTRON\new2\node_modules\@google-cloud\text-to-speech\build\src\v1\text_to_speech_client.js:106:38)
    at quickStart (file:///C:/ELECTRON/new2/index.html:38:20)
    at file:///C:/ELECTRON/new2/index.html:58:3

В индексе. html: 38: 20 есть функция

const client = new textToSpeech.TextToSpeechClient();

, которая возвращает эту ошибку .

Есть еще один большой вопрос: GOOGLE_APPLICATION_CREDENTIALS .

В Электрон, как мне его настроить? Я хочу включить json (загруженный из Google) в распространяемую версию приложения. По этой ссылке я только нашел, как установить переменную на бэкэнд Windows / Linux.

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Относительно файла GOOGLE_APPLICATION_CREDENTIALS эта переменная должна быть установлена ​​в среде windows / linux / MacOs.

https://cloud.google.com/docs/authentication/getting-started#setting_the_environment_variable

Установка переменной среды позволяет предоставлять учетные данные отдельно от приложения, не внося изменений в код приложения при развертывании.

После проверки и тестирования текста в речь code , которым вы поделились, я смог выполнить пример (без Electron), ошибка, которую вы получаете, похоже, связана с тем, как вы обрабатываете переменные.

0 голосов
/ 16 апреля 2020

Я сделал это, но это не работает.

На самом деле есть еще одна странная вещь: мне пришлось изменить исходный код. Была эта строка source = util.fs.readFileSync(filename).toString("utf8");, которая выдала мне эту ошибку Uncaught TypeError: Cannot read property 'readFileSync' of null at fetch (C:\ELECTRON\new2\node_modules\protobufjs\src\root.js:160)

Измените ее на source = fs.readFileSync(filename).toString("utf8");, и она начнет давать мне ошибку, о которой сообщалось в моем первом сообщении. Я следовал за шагами. У меня есть json, хранящийся в электронной папке `

{
  "type": "service_account",
  "project_id": "XXXXXXXXXXX",
  "private_key_id": "XXXXXXXXXXXX",
  "private_key": "-----BEGIN PRIVATE KEY-----\nXXXXXXXXXXXX\n-----END PRIVATE KEY-----\n",
  "client_email": "XXXXXXX",
  "client_id": "XXXXXXX",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/XXXXXXX.gserviceaccount.com"
}`

. Я думаю, что моя ошибка заключается в установке GOOGLE_APPLICATION_CREDENTIALS, которую я должен внедрить в Electron, и я пока не понимаю, как ее настроить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...