使用Expo+Google Speech-to-Text本地音频转写为空问题求助
Google Speech-to-Text API 本地音频Base64转写空结果解决方法
检查Base64编码有效性
确保编码后的字符串完整无截断,不要添加data:audio/m4a;base64,这类前缀,API仅接受纯Base64文本。可以将Base64解码回本地文件,用播放器验证是否能正常播放,确认编码过程未损坏音频内容。匹配音频配置与API要求
Google Speech-to-Text需要明确的音频参数配置,尤其是m4a格式(通常为AAC编码),请求中必须指定正确的编码、采样率和语言代码:{ "audio": { "content": "你的Base64字符串" }, "config": { "encoding": "AAC", "sampleRateHertz": 44100, // 替换为音频实际采样率 "languageCode": "zh-CN" // 替换为目标语言代码 } }可以用
ffmpeg -i 你的音频文件.m4a命令查看音频的采样率、编码格式等参数,确保配置完全匹配。规范本地音频读取方式
在Expo环境中,必须用二进制模式读取音频文件生成Base64:import * as FileSystem from 'expo-file-system'; const getBase64Audio = async (uri) => { return await FileSystem.readAsStringAsync(uri, { encoding: 'base64' }); };避免用文本模式读取导致的内容损坏。
排查请求结构与权限
确认请求为POST方法,Content-Type设置为application/json;同时检查API密钥/服务账号权限,确保Base64方式的请求未被配额或权限拦截。测试最简请求
用一段10秒内的清晰语音音频编码成Base64,构造最简请求发送给API,排除长音频或复杂内容的干扰,验证核心功能是否正常。
内容的提问来源于stack exchange,提问作者DevPatrickSousa
相关产品推荐
相关产品推荐

