Don';I don’我不知道如何从谷歌云存储中转录wav文件,以便长时间运行识别C#中的文本转换?
我能够将音频文件转换为文本,只要它们不超过一分钟。我需要转录更长的文件。显然,您必须将该文件保存在云存储中,但我无法确定是否有一个命令可以执行此操作,或者我是否必须单独执行此操作。我现在使用的是:Don';I don’我不知道如何从谷歌云存储中转录wav文件,以便长时间运行识别C#中的文本转换?,c#,google-cloud-storage,google-cloud-speech,C#,Google Cloud Storage,Google Cloud Speech,我能够将音频文件转换为文本,只要它们不超过一分钟。我需要转录更长的文件。显然,您必须将该文件保存在云存储中,但我无法确定是否有一个命令可以执行此操作,或者我是否必须单独执行此操作。我现在使用的是: var credential = GoogleCredential.FromFile(GoogleCredentials); var channel = new Grpc.Core.Channel(SpeechClient.DefaultEndpoint.ToString(), credential.
var credential = GoogleCredential.FromFile(GoogleCredentials);
var channel = new Grpc.Core.Channel(SpeechClient.DefaultEndpoint.ToString(), credential.ToChannelCredentials());
var speech = SpeechClient.Create(channel);
var response = speech.LongRunningRecognize(
new RecognitionConfig()
{
Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
LanguageCode = "en",
},
RecognitionAudio.FromFile(waveFile));
response = response.PollUntilCompleted();
我知道我需要在云存储中指定一个文件,如:
RecognitionAudio.FromStorageUri("gs://ldn-speech/" + waveFile);
但我不知道如何把文件放进垃圾桶。我必须在单独的步骤中或作为语音API的一部分来完成吗?我在找人给我举个例子
编辑:我发现我需要单独上传文件,并且可以使用我在语音识别过程中已经使用过的凭证文件:因此,我所需要的只是:
var credential = GoogleCredential.FromFile(GoogleCredentials);
var storage = StorageClient.Create(credential);
using (var f = File.OpenRead(fullFileName))
{
fileName = Path.GetFileName(fullFileName);
storage.UploadObject(bucketName, fileName, null);
}
var credential = GoogleCredential.FromFile(GoogleCredentials);
var storage = StorageClient.Create(credential);
using (var f = File.OpenRead(fullFileName))
{
fileName = Path.GetFileName(fullFileName);
storage.UploadObject(bucketName, fileName, null);
}
在你的情况下,还有另一种方法 正如您在编辑中所述,您确实需要将文件单独上传到您的云存储桶中。 如果你打算把长音频文件(超过1分钟)转录成文本,你可以考虑使用异步语音识别: 代码示例使用云存储桶存储长时间运行的转录过程的原始音频输入。它还要求您已创建并激活服务帐户 下面是一个例子:
static object AsyncRecognizeGcs(string storageUri)
{
var speech = SpeechClient.Create();
var longOperation = speech.LongRunningRecognize(new RecognitionConfig()
{
Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
SampleRateHertz = 16000,
LanguageCode = "en",
}, RecognitionAudio.FromStorageUri(storageUri));
longOperation = longOperation.PollUntilCompleted();
var response = longOperation.Result;
foreach (var result in response.Results)
{
foreach (var alternative in result.Alternatives)
{
Console.WriteLine($"Transcript: { alternative.Transcript}");
}
}
return 0;
}
(1) 我发现我确实需要将文件单独上传到cloud storate。(2) 可以使用我在语音识别过程中已经使用过的凭证文件:因此,我只需要:
var credential = GoogleCredential.FromFile(GoogleCredentials);
var storage = StorageClient.Create(credential);
using (var f = File.OpenRead(fullFileName))
{
fileName = Path.GetFileName(fullFileName);
storage.UploadObject(bucketName, fileName, null);
}
var credential = GoogleCredential.FromFile(GoogleCredentials);
var storage = StorageClient.Create(credential);
using (var f = File.OpenRead(fullFileName))
{
fileName = Path.GetFileName(fullFileName);
storage.UploadObject(bucketName, fileName, null);
}
一旦进入云存储,我就可以按照我最初的想法转录它。然后在该过程完成后删除该文件,包括:
var credential = GoogleCredentials;
var storage = StorageClient.Create(credential);
using (var f = File.OpenRead(fullFileName))
{
fileName = Path.GetFileName(fullFileName);
storage.DeleteObject(bucketName, fileName);
}
这回答了你的问题吗?因此,这意味着(1)它完全独立于语音识别过程,(2)为准备语音API而设置的凭据都不能用于上载,以及(3)无法使用已为语音通道建立的凭据轻松上载文件。所有这些语句都是正确的吗?我把所有的代码放进去只是为了让程序启动一个错误,并说我只需要凭证文件。。。我已经为演讲准备好了。所以,我所要做的就是编辑上面的代码: