javascript - python javascript IBMCloud remake Watson-voice-bot for Japanese
问题描述
很抱歉在您忙碌时打扰您。我不介意任何提示或期望,所以如果你能告诉我,我将不胜感激。这是我第一次在这里提问。我是一名日本学生。
这一次,我想将 IBM Cloud 的开源代码 watson-voice-bot 重新制作为日语。但是,我尝试了很长时间,但他们只会说英语。我会继续挑战,但如果有人能给我一些建议,我会很高兴。
此代码是使用三个服务的 api 编写的:语音转文本、文本转语音和 watson 助手。主要功能是一个聊天机器人,它在网站上获取人声,人工智能通过语音做出响应。
https://www.youtube.com/watch?v=umf5egQPPRI
现在可以确定的是在源代码中设置外语的url,将其转换为英文。
所以我尝试正确设置环境变量,但我仍然会说英语。当然,自然语言数据集有日语。
recorder.js 和welcome.py 等尝试了各种方法,例如更改我认为可疑的值,但聊天机器人本身不起作用。
特别是在recorder.js中,我认为像recordeng这样的值会导致一个解决方案,但我无法提出一个明确的解决方案,因为我对Javascript没有足够的了解。
recorder.js 的一部分
recorder.setupDownload = function(blob){
if($('#isRecording').prop('value')=='recordEng')
{
window.postEnglishAudio(blob);
var url = (window.URL || window.webkitURL).createObjectURL(blob);
var link = document.getElementById("saveEnglish");
link.href = url;
link.download = 'EnglishRecording.wav';
link.target = '_blank';
}
else {
window.postHindiAudio(blob);
var url = (window.URL || window.webkitURL).createObjectURL(blob);
var link = document.getElementById("saveHindi");
link.href = url;
link.download = 'HindiRecording.wav';
link.target = '_blank';
}
document.getElementById("isRecording").value="none";
// var url = (window.URL || window.webkitURL).createObjectURL(blob);
// var link = document.getElementById("save");
// link.href = url;
// link.download = filename || 'output.wav';
}
Welcome.py 的一部分
@app.route('/api/text-to-speech', methods=['POST'])
def getSpeechFromText():
tts_kwargs = {
'username': textToSpeechUser,
'password': textToSpeechPassword,
'iam_apikey': textToSpeechIAMKey,
'url': textToSpeechUrl
}
inputText = request.form.get('text')
ttsService = TextToSpeechV1(**tts_kwargs)
def generate():
audioOut = ttsService.synthesize(
inputText,
'audio/wav',
'ja-JP_EmiVoice').get_result()
data = audioOut.content
yield data
return Response(response=generate(), mimetype="audio/x-wav")
解决方案
请显示您的 TTS 代码,因为该错误很可能是因为您没有正确设置 STT 识别方法中的语言模型。
在您展示的 TTS Synthesize 方法中,可以看出您做错了什么。您正在指定位置参数,但如果您查看 Python SDK - https://github.com/watson-developer-cloud/python-sdk/blob/master/ibm_watson/text_to_speech_v1.py
def synthesize(self,
text,
voice=None,
customization_id=None,
accept=None,
**kwargs):
顺序是文字,然后是语音。您应该将参数指定为关键字,如 API 文档中所示 - https://cloud.ibm.com/apidocs/text-to-speech?code=python#synthesize-audio-get
所以在你的情况下:
audioOut = ttsService.synthesize(
inputText,
accept = 'audio/wav',
voice = 'ja-JP_EmiVoice').get_result()
有关如何使用 Python SDK for Watson 的完整示例,请查看 API 文档 - https://cloud.ibm.com/apidocs/text-to-speech?code=python#synthesize-audio
您的代码应类似于 -
from ibm_watson import TextToSpeechV1
@app.route('/api/text-to-speech', methods=['POST'])
def getSpeechFromText():
tts_kwargs = {
'username': textToSpeechUser,
'password': textToSpeechPassword,
'iam_apikey': textToSpeechIAMKey,
'url': textToSpeechUrl
}
inputText = request.form.get('text')
ttsService = TextToSpeechV1(
iam_apikey=textToSpeechIAMKey,
url=textToSpeechUrl
)
def generate():
audioOut = ttsService.synthesize(
inputText,
voice='ja-JP_EmiVoice',
accept='audio/wav').get_result()
data = audioOut.content
yield data
return Response(response=generate(), mimetype="audio/x-wav")
推荐阅读
- mongodb - Mongodb 从数组中的数组投影对象 - 嵌套数组
- c# - 查找列表中匹配表达式的连续元素
- excel - 使用 SUMIFS 聚合数据
- html - 导航项上的当前链接提示
- react-native - 在没有调试器的情况下无法在本机反应中找到变量 indexeddb
- javascript - TypeError:无法在 Vue.js 中使用 Realtime Firebase 设置未定义返回 JSON 问题的属性
- java - 无法解决 Maven 依赖项:排除代理原因
- c++ - 如何在 Qt pro 文件中添加导出路径
- c# - C# 不能正确转换“★”
- list - 只想选择列表中的一些随机元素并在 OCaml 中返回它们