You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中.wav/.mp3文件应关联何种类型?ASR调用报错求助

解决Android调用ASR API上传raw目录音频文件的报错问题

这个报错和.mp3文件的关联类型无关,核心问题是Android中res/raw目录下的资源是编译进APK的内部资源,并非文件系统中的普通文件,直接按文件路径处理会导致API接收到无效的文件对象(也就是报错里的NoneType),进而触发'NoneType' object has no attribute 'filename'错误。

解决步骤:

  • 先将raw资源的输入流转换为临时文件,再用临时文件上传到API:
    大多数ASR API要求接收带文件名的文件对象,直接传输入流无法满足要求,需要先把raw资源写入到缓存目录的临时文件中。

  • 示例代码:

    // 获取raw资源的输入流
    InputStream inputStream = getResources().openRawResource(R.raw.yes);
    // 在缓存目录创建临时mp3文件
    File tempFile = File.createTempFile("yes", ".mp3", getCacheDir());
    
    // 将raw资源写入临时文件
    FileOutputStream outputStream = new FileOutputStream(tempFile);
    byte[] buffer = new byte[1024];
    int readLength;
    while ((readLength = inputStream.read(buffer)) != -1) {
        outputStream.write(buffer, 0, readLength);
    }
    
    // 关闭流
    inputStream.close();
    outputStream.close();
    
    // 后续使用tempFile作为文件参数调用ASR API
    // 上传完成后可以设置临时文件自动删除
    tempFile.deleteOnExit();
    

关于文件关联类型:

Android Studio中raw目录下的.mp3文件无需手动修改关联类型,保持默认的Audio类型即可,之前尝试的Text、Archive类型都是错误设置,但这不是导致报错的根本原因。

内容的提问来源于stack exchange,提问作者Shashank2002

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:05:14