在Google Colab中从Google Storage加载wav音频报错的问题咨询
报错核心原因
librosa.load 不支持识别 gs:// 协议格式的远程云存储路径。这类音频读取库仅能处理本地磁盘文件、或公开可访问的HTTP/HTTPS链接,传入手动拼接的gs://路径时,库会尝试从Colab本地磁盘匹配同名字符串对应的路径,自然会触发文件不存在的报错。
修正后可直接运行的代码
import numpy as np import io import librosa from google.cloud import storage import os from google.colab import auth # GCS认证与客户端初始化 auth.authenticate_user() os.environ["GCLOUD_PROJECT"] = "fundpro" BUCKET = "parli-2020" gcs = storage.Client() bucket = gcs.get_bucket(BUCKET) for blob in bucket.list_blobs(prefix="speech/Transcribe"): # 跳过GCS虚拟目录条目,避免误加载非文件对象 if blob.name.endswith("/"): continue # 拉取音频字节流到Colab内存,无需落地到本地磁盘 audio_bytes = blob.download_as_bytes() # 包装为类文件对象传入librosa,sr=None保留音频原始采样率 X, sample_rate = librosa.load(io.BytesIO(audio_bytes), sr=None)
注意事项
- 遍历blob列表时,带匹配前缀的虚拟目录会以空条目形式出现在遍历结果中,不做判断直接加载也会触发同类文件不存在报错
- 若单文件体积过大(数GB级别),可选择临时将文件下载到Colab本地临时目录加载,避免内存溢出;常规时长的语音文件用字节流内存加载的效率更高
- 不要手动拼接
gs://路径字符串传入任何本地文件读取类库,这类库没有内置GCS认证链路,无法解析这类云存储路径
内容的提问来源于stack exchange,提问作者AmaniAli
相关产品推荐
相关产品推荐

