我正在使用自定义命令创建像"Ok Google"这样的语音识别服务.为此,我使用了VoiceInteractionService,我从这里引用了代码.另外,我收到了STATE_HARDWARE_UNAVAILABLE错误onAvailabilityChanged.
public class VoiceCommandService extends VoiceInteractionService {
private static final String TAG = "AlwaysOnHotwordDetector";
Locale locale = new Locale("en-US");
protected SpeechRecognizer mSpeechRecognizer;
protected Intent mSpeechRecognizerIntent;
public final Callback mHotwordCallback = new Callback() {
@Override
public void onAvailabilityChanged(int status) {
Log.i(TAG, "onAvailabilityChanged(" + status + ")");
hotwordAvailabilityChangeHelper(status);
}
@Override
public void onDetected(EventPayload eventPayload) {
Log.i(TAG, "onDetected");
}
@Override
public void onError() {
Log.i(TAG, "onError");
}
@Override
public void onRecognitionPaused() {
Log.i(TAG, "onRecognitionPaused"); …Run Code Online (Sandbox Code Playgroud) 我搜索了Google的所有可用文档,但我找不到Python中音频流上的流语音识别示例.
目前,我在Django中使用Python语音识别来获取用户的音频,然后收听音频.然后我可以保存文件并运行谷歌语音识别或直接从创建的音频实例.
有人可以指导我如何在音频流上执行流式语音识别吗?
我正在尝试使用谷歌语音API将音频文件转换为文本,但面临文档的一些问题.我已启用语音API并创建了服务帐户文件.我还激活了服务帐户凭据.然后我编写了以下命令来使用我的服务帐户检索授权令牌.
gcloud auth application-default print-access-token
我不明白为什么会这样,因为我已经在我的计算引擎中创建了一个VM实例.任何人都可以解释我在哪里出错吗?此外,有没有其他方法来验证我的帐户并调用谷歌语音API?
我在我的Django网络应用程序中使用Google Speech API.我已经为它设置了一个服务帐户,并且能够在本地进行API调用.我已将本地GOOGLE_APPLICATION_CREDENTIALS环境变量指向服务帐户的json文件,该文件包含所有凭据.
我试过GOOGLE_APPLICATION_CREDENTIALS通过运行来设置heroku的环境变量
$ heroku config:set GOOGLE_APPLICATION_CREDENTIALS="$(< myProjCreds.json)"
$ heroku config
GOOGLE_APPLICATION_CREDENTIALS: {
Run Code Online (Sandbox Code Playgroud)
^^它"在json文件的第一次出现时终止,紧接在{
和之后
$ heroku config:set GOOGLE_APPLICATION_CREDENTIALS='$(< myProjCreds.json)'
$ heroku config
GOOGLE_APPLICATION_CREDENTIALS: $(< myProjCreds.json)
Run Code Online (Sandbox Code Playgroud)
^^该命令被保存到环境变量中
我尝试将heroku的GOOGLE_APPLICATION_CREDENTIALSenv变量设置为服务帐户的json文件的内容,但它不起作用(因为显然此变量的值必须是json文件的绝对路径).我发现它授权一个开发者账户,而无需加载JSON户头,而使用的方法GOOGLE_ACCOUNT_TYPE,GOOGLE_CLIENT_EMAIL和GOOGLE_PRIVATE_KEY.这是GitHub的讨论页面.
我想为我的Django网络应用程序提供类似(或不同的东西)的东西,我想避免将json文件上传到我的Django web-app的目录(如果可能),以确保安全.
django heroku environment-variables google-authentication google-speech-api
我正在开发一款需要从用户那里获取输入并根据其执行某些操作的产品。我们已经通过打字通过聊天框实现了它,它满足了我们的目的。对于未来的版本,我们希望在聊天窗口中添加语音识别功能。我们想到使用
window.speechRecognition() || window.webkitSpeechRecognition()
但我们发现浏览器中可用的功能使用的是 Google 的 Cloud Speech API。当我们处理非常敏感的用户信息时,这将是安全问题。是否有任何其他替代方案来实现在任何浏览器中工作的语音识别。
speech-recognition speech-to-text google-speech-api tensorflow
我正在尝试使用谷歌语音(到文本)API 来确定演讲者的流畅度。
到目前为止,我发现 API (betav1) 可以显示说话所需的时间(开始时间和结束时间)。
从维基百科,
口语流利度或口语流利度是对语音的产生和接收的衡量标准,因为流利的说话者必须能够在对话中理解和回应他人。由于“任务压力”,口语的典型特征是看似不流利的品质(例如,支离破碎、停顿、错误的开始、犹豫、重复)。因此,可以通过感知来理解一个人的口语流利程度,以及这些语音质量是否可以被感知为预期和自然(即流利)或不寻常且有问题(即不流利)
我可以看到我们可以从单词的 API 中获取暂停、重复等。但是相对测量可能很困难,因为我找不到任何标准值。
有没有适当的方法来实现这一目标?任何人都可以给出一个指南来检测 google API 的流畅度(或使用某种开源语音库或外部软件的任何其他有效方法)
如果我完全走错了方向,那完全没问题,只需要一个适当的指南来实现该功能。
我正在尝试使用Google的Cloud Speech API.这里有文档和代码示例:
https://cloud.google.com/speech/docs/basics
https://cloud.google.com/speech/docs/rest-tutorial
Run Code Online (Sandbox Code Playgroud)
如果我将它指向包含的文件audio.raw,但是没有简短的.wav文件,我可以让示例代码运行得很好.
我不知道音频样本文件的格式是什么:
$ file audio.raw
audio.raw: data
Run Code Online (Sandbox Code Playgroud)
我的.wav文件可能有10秒的音频,我得到一个空的结果.
我知道这个答案.
我之前曾问过我的问题,但问题没有答案.
我无法想象我必须得到音频文件的属性恰到好处才能使其工作.我假设一个常见的用例,我的是,有人录制会议,不知道录制的参数,只是想要一个文本文件.
audio google-cloud-platform google-voice-search google-speech-api
我正在尝试扩展 RecognitionService 以尝试除谷歌提供之外的不同语音到文本服务。为了检查 SpeechRecognizer 是否正确初始化,现在给出了虚拟实现。当在 RecognitionService#checkPermissions() 内完成以下检查时,我收到“RecognitionService:在没有 RECORD_AUDIO 权限的情况下调用识别服务”。
if (PermissionChecker.checkCallingPermissionForDataDelivery(this,
android.Manifest.permission.RECORD_AUDIO, packageName, featureId,
null /*message*/)
== PermissionChecker.PERMISSION_GRANTED) {
return true;
}
Run Code Online (Sandbox Code Playgroud)
请注意,检查了类似的报告问题,并且我验证了在我的扩展服务中,在检查下面时存在此权限。
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED)
Run Code Online (Sandbox Code Playgroud)
安卓清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.texttospeech">
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<queries>
<package android:name="com.google.android.googlequicksearchbox"/>
</queries>
<application
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".SampleSpeechRecognizerService"
android:exported="true"
android:foregroundServiceType="microphone"
android:permission="android.permission.RECORD_AUDIO">
<intent-filter>
<action android:name="android.speech.RecognitionService" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service> …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用语音 API 客户端 API 将音频文件转换为文本。
到目前为止,我已经成功转换了一个短音频剪辑,但现在使用一个较长的文件(10 分钟),我收到此错误:
Retry total timeout exceeded before anyresponse was received
Run Code Online (Sandbox Code Playgroud)
我在文档中读到,对于异步调用,每次调用的最大分钟数是 60 分钟,并且我已将文件上传到 Google Cloud Storage,因为超过 1 分钟的文件需要它。
所以我真的不明白为什么我会收到这个错误,有什么帮助吗?
我正在使用SpeechToText API从现场麦克风录音中获取语音转录。这适用于简单的 LINEAR16 编码,但我需要减少带宽,因此我切换到 OGG Opus 编码。
使用这个库在 OGG Opus 客户端中记录和编码音频。
然后,它使用 websocket 发送到后端应用程序。
最后,后端应用程序以流模式请求 STT API,该模式保持静默(没有错误,但输出中也没有文本)。
这些是编码选项:
var options = {
monitorGain: 0,
recordingGain: 1,
numberOfChannels: 1,
encoderSampleRate: 16000,
encoderPath: "./javascript/ogg_opus/encoderWorker.min.js",
originalSampleRateOverride: 16000,
streamPages: true,
encoderApplication: 2048
};
Run Code Online (Sandbox Code Playgroud)
这是发送到 API 的配置:
{
encoding: 'OGG_OPUS',
language: 'fr',
rate: 16000
}
Run Code Online (Sandbox Code Playgroud)
这是将音频发送到 websocket 的方式:
recorder.ondataavailable = function(typedArray){
var dataBlob = new Blob([typedArray], { type: 'audio/ogg' });
websocket.emit('audio_data', dataBlob);
};
Run Code Online (Sandbox Code Playgroud)
后端部分是用 Python 开发的,遵循这个例子。
您知道使 API 工作所需的 …