Skip to content

Google Cloud Speech API 调用注意事项及调用方式

Google Cloud Speech API 调用注意事项及调用方式

引言

现阶段,语音自动识别功能已趋于完善,对与大部分用户来说,能说能听足矣!在说听的同时还能看,岂不美哉?对此,Google提供了语音转为文字的应用——Cloud Speech API。本文将从使用该API的前提条件,注意事项,在.net开发环境下实现从本地读取音频文件解析为文字,从Google Cloud Storage中读取音频文件解析文字,以及上传本地音频文件到Google Cloud Storage。

调用API前提条件

一.既然是用Google的API,在内地你首先保证能(fq)访问Google官网,具体操作此处就省略操作关于翻墙软件,代理服务的文字。

二.注册Google帐号,登录Google Cloud Platform,创建项目,在API管理器中添加项目凭据。凭据1为服务账号密匙,OAuth客户端ID。其具体操作见文档–Google Cloud Speech API调用注意事项,里面有详细操作步骤及步骤截图。因该API为付费产品,需在创建项目后对其付费,Google推出免费60天使用及300刀的赠金,对与初次研究者来说就是注册Google云平台的事罢了。

三.满足上面两条件,基本可以保证对一定规则的音频文件调用Cloud Speech API后转换成文字。对与音频文件的要求如下:

1.音频的编码格式:1声道,PCM;

2.采样频率:16000HZ;

3.读取本地的音频文件播放时长小于60s,读取云存储中的音频文件播放时长小于80min。

以上条件是最基本的,对于其它详细内容请访问该地址。

四.在VS2015中使用该接口,首先需要安装并引用如下DLL到项目中:

获取以上DLL方式:

1.通过在项目引用中点击Nuget程序包中搜寻Dll名字进行下载安装,

2.通过Nuget的程序包管理器控制平台输入命令进行安装。

命令有Install-Package Google.Apis;Install-Package Google.Apis.Core;Install-Package Google.Apis.CloudSpeechAPI.v1beta1等。

如果安装或下载均不方便,可以从这里获取一系列DLL。完成以上步骤后,接下来就用代码展示该API的魅力吧。

读取本地音频文件转换为文字

注:如下Demo是windows应用程序,所有方法都为static

1.创建类型为CloudSpeechAPIService的方法,目的是通过环境变量获取Google的凭证,连接在云平台建立的项目。PS:如果此方法出现异常,请查看前提条件二。

 static public CloudSpeechAPIService CreateAuthorizedClient()

        {

            GoogleCredential credential =GoogleCredential.GetApplicationDefaultAsync().Result;//读取环境变量中的GOOGLE_APPLICATION_CREDENTIALS

            if (credential.IsCreateScopedRequired)

            {

                credential = credential.CreateScoped(new[]

                {

                    CloudSpeechAPIService.Scope.CloudPlatform

                });//获取认证

            }

            return new CloudSpeechAPIService(new BaseClientService.Initializer()

            {

                HttpClientInitializer = credential,

                ApplicationName = “DotNet Google Cloud Platform Speech Sample”,

            });

        }

2.读取本地音频文件,调用Cloud Speech API进行文字转换。ps:音频文件格式最好为1声道PCM,播放长度小于60s,否则不易获取正确转换结果。

 static public void Main(string[] args)

        {

            var service = CreateAuthorizedClient();//获取云服务认证

            string audio_file_path = “本地文件路径”;

          //配置参数

            var request = new Google.Apis.CloudSpeechAPI.v1beta1.Data.SyncRecognizeRequest()

            {

                Config = new Google.Apis.CloudSpeechAPI.v1beta1.Data.RecognitionConfig()

                {

                   Encoding = “LINEAR16”,//编码格式

                   SampleRate = 16000,//采样频率

                   LanguageCode =  “en-US”//英文播放内容

               //LanguageCode = “cmn-Hans-CN”中文播放内容

                },

                Audio = new Google.Apis.CloudSpeechAPI.v1beta1.Data.RecognitionAudio()

                {

                    Content = Convert.ToBase64String(File.ReadAllBytes(audio_file_path))//读取文件转换为Base64字符串

                }

            };

            // 配置完成

            // 调用GloudSpeechAPI进行请求

            StringBuilder sb = new StringBuilder();

           Console.WriteLine(“Starte Time :” + startTime);

            try

            {

                var asyncResponse = service.Speech.Asyncrecognize(request).Execute();

                var name = asyncResponse.Name;

                Google.Apis.CloudSpeechAPI.v1beta1.Data.Operation op;

                do

                {

                    Console.WriteLine(“Waiting for server processing…”);

                    Thread.Sleep(1000);

                    op = service.Operations.Get(name).Execute();

                    if (op.Error?.Message != null)

                    {

                       Console.WriteLine(op.Error.Message);

                    }

                } while (!(op.Done.HasValue && op.Done.Value));

                dynamic results = op.Response[“results”];

                foreach (var result in results)

                {

                    foreach (var alternative in result.alternatives)

                    {

                        sb.Append(alternative.transcript);//将转换结果放入StringBuilder中

                    }

                }

            }

            catch (Exception ex)

            {

                Console.WriteLine(ex.Message);

            }

            DateTime endTime = DateTime.Now;

            var timeTaken = endTime – startTime;

            sb.Append(“rnEnd Time:” + endTime + “t” + “Time-taken:” + (timeTaken));

            Console.WriteLine( sb.ToString());

            Console.ReadKey();

            // 结束请求

        }

通过如上方法,就可以获取到音频文件播放内容。

相关推荐: 跨境电商需要懂外语吗?跨境电商有哪些技巧?

厦门商城系统开发 在做跨境电的时候,往往需要做国外市场,所以很多人认为需要懂外语,否则可能无法和国外买家沟通。 那么跨境电商需要懂外语吗?跨境电商有哪些技巧? 一、跨境电商需要懂外语吗? 不一定。 阻止人们前进的不是英语,而是他们自己的信心。如果跨境电子商务能…

    码刀科技(www.lekshop.cn)是国内知名企业级电商平台提供商,为企业级商家提供最佳的电商平台搭建(多种模式电商平台搭建:B2B/B2B2C/B2C/O2O/新零售/跨境等)、平台管理系统开发及互联网采购解决方案服务, 联系客服了解更多.

    电子商务网站建设的重要性和好处