[英]Google speech-to-text API sample code will not run
我一直在重新阅读说明(设置项目,使用我的服务帐户密钥将环境变量设置为 JSON 文件的文件路径,安装/初始化 gcloud 等)但我无法运行示例代码所有,我不知道为什么。 示例代码是:
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
// Creates a client
const client = new speech.SpeechClient();
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
const gcsUri = '.resources/audio.raw';
const encoding = 'LINEAR16';
const sampleRateHertz = 16000;
const languageCode = 'en-US';
const config = {
encoding: encoding,
sampleRateHertz: sampleRateHertz,
languageCode: languageCode,
};
const audio = {
uri: gcsUri,
};
const request = {
config: config,
audio: audio,
};
// Detects speech in the audio file. This creates a recognition job that you
// can wait for now, or get its result later.
const [operation] = await client.longRunningRecognize(request);
// Get a Promise representation of the final result of the job
const [response] = await operation.promise();
const transcription = response.results
.map(result => result.alternatives[0].transcript)
.join('\n');
console.log(`Transcription: ${transcription}`);
终端显示以下错误:
const [operation] = await client.longRunningRecognize(request);
^^^^^^
SyntaxError: Unexpected identifier
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)
at run (bootstrap_node.js:389:7)
at startup (bootstrap_node.js:149:9)
我不明白为什么它是一个意外的标识符。 没有创建 const 客户端吗?
“await”用于异步 function,让我们将您的代码放入异步 function
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
// Creates a client
const client = new speech.SpeechClient();
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
const gcsUri = '.resources/audio.raw';
const encoding = 'LINEAR16';
const sampleRateHertz = 16000;
const languageCode = 'en-US';
const config = {
encoding: encoding,
sampleRateHertz: sampleRateHertz,
languageCode: languageCode,
};
const audio = {
uri: gcsUri,
};
const request = {
config: config,
audio: audio,
};
async function main () {
// Detects speech in the audio file. This creates a recognition job that you
// can wait for now, or get its result later.
const [operation] = await client.longRunningRecognize(request);
// Get a Promise representation of the final result of the job
const [response] = await operation.promise();
const transcription = response.results
.map(result => result.alternatives[0].transcript)
.join('\n');
console.log(`Transcription: ${transcription}`);
}
main();
await
关键字只能在异步函数中使用。
您可以将部分代码包装在 promise function 中,然后调用 promise:
const detectSpeach = async () => {
// Detects speech in the audio file. This creates a recognition job that you
// can wait for now, or get its result later.
const [operation] = await client.longRunningRecognize(request);
// Get a Promise representation of the final result of the job
const [response] = await operation.promise();
const transcription = response.results
.map(result => result.alternatives[0].transcript)
.join('\n');
console.log(`Transcription: ${transcription}`);
};
detectSpeach();
const [operation] = await client.longRunningRecognize(request);
^^^^^^
SyntaxError: Unexpected identifier
我不明白为什么它是一个意外的标识符。 没有创建
const client
吗?
答案是,是的, const client
已初始化,但await
在普通 JavaScript 脚本中不被视为关键字。 在async
function(或生成器函数)之外, await
通常是一个有效的标识符,因此client
后面的await
序列不是有效的表达式,因为client
是一个意外的标识符。
要将await
用作运算符,它必须在async
function 或生成器中编码。 在新代码中使用await
作为标识符可能是不明智的。
背景:
await
作为保留字或未来保留字,await
作为未来的保留字。await
作为保留字,但提供它可以用作标识符,除非句法语法的目标 [symbol] 是Module 我对这种拼凑的混乱的理解是,通过修改 JavaScript 解析器来检测可能是什么语法错误( async
async function
, await
await identifier
, for await... of
)并在某些情况下进一步处理它们,而不是进一步处理它们所有,上下文。
写一个答案,因为我没有足够的声誉来发表评论。 您使用的是哪个节点版本? IIRC,从 7.6 版开始支持await
/ async
其他答案谈论将其放入async
function 中,您也需要这样做,但我认为它为这种情况引发的错误将类似于“异步是保留关键字”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.