Cloud Text-to-Speech API语法错误:Windows下curl命令执行失败求助
嘿,我来帮你搞定这个Google Text-to-Speech的问题!作为Python初学者,其实你完全可以绕开curl的坑,用更顺手的Python SDK来实现,但先帮你把curl的问题解决,再给你推荐更适合的方案~
先解决Windows控制台的curl报错问题
你遇到的语法错误+301跳转,主要是Windows cmd和Linux/bash的语法差异导致的,还有命令替换、引号转义的问题,一步步来:
- 先手动获取访问令牌
Windows cmd不支持bash的$(gcloud ...)命令替换,所以先单独执行这条命令拿到token:
gcloud auth application-default print-access-token
把输出的长串字符复制下来,后面要用到。
- 调整curl命令适配Windows cmd
把教程里的curl命令改成cmd兼容的格式,注意三点:
- 去掉bash的换行反斜杠
\,改成一行命令 - JSON里的双引号要加反斜杠
\转义(cmd里双引号字符串内部的双引号必须转义) - 加上
-L参数让curl自动跟随301跳转
最终命令如下(记得替换YOUR_TOKEN_HERE为你刚复制的令牌):
curl -L -X POST -H "Authorization: Bearer YOUR_TOKEN_HERE" -H "Content-Type: application/json; charset=utf-8" --data "{\"input\":{\"text\":\"Hello, World!\"},\"voice\":{\"languageCode\":\"en-US\",\"name\":\"en-US-Standard-C\",\"ssmlGender\":\"FEMALE\"},\"audioConfig\":{\"audioEncoding\":\"MP3\"}}" "https://texttospeech.googleapis.com/v1/text:synthesize"
更推荐的Python方案(适合你)
既然你熟悉Python,用Google官方的Python SDK会比curl省心太多,完全不用纠结命令行语法问题:
- 安装TTS库
打开cmd执行:
pip install google-cloud-texttospeech
- 编写简单的合成脚本
创建一个tts_demo.py文件,粘贴下面的代码:
from google.cloud import texttospeech # 初始化客户端 client = texttospeech.TextToSpeechClient() # 设置要合成的文本 synthesis_input = texttospeech.SynthesisInput(text="Hello, 这是测试的合成语音!") # 配置语音参数(可以根据需求修改语言、音色) voice = texttospeech.VoiceSelectionParams( language_code="zh-CN", name="zh-CN-Standard-A", ssml_gender=texttospeech.SsmlVoiceGender.MALE ) # 设置音频输出格式(这里选MP3) audio_config = texttospeech.AudioConfig( audio_encoding=texttospeech.AudioEncoding.MP3 ) # 发起合成请求 response = client.synthesize_speech( input=synthesis_input, voice=voice, audio_config=audio_config ) # 保存音频到本地文件 with open("output.mp3", "wb") as out_file: out_file.write(response.audio_content) print("合成完成!音频已保存为output.mp3")
- 配置环境变量(关键)
在cmd里设置你的Google服务账号密钥文件路径(前6步应该已经生成了这个JSON文件):
set GOOGLE_APPLICATION_CREDENTIALS="C:\你的密钥文件路径\service-account-key.json"
- 运行脚本
python tts_demo.py
执行完就能在当前目录看到生成的output.mp3啦~
关于301跳转的小说明
这个错误通常是因为请求的URL协议或路径有问题,curl默认不跟随跳转,加上-L参数就能自动处理;而Python SDK会自动处理这类重定向,不用你额外配置。
内容的提问来源于stack exchange,提问作者normandantzig
相关产品推荐
相关产品推荐

