文章目录

  • 一、遇到报错
  • 二、错误分析与解决

一、遇到报错

笔者在进行代码复现的时候,在数据读取时遇到报错:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 41: invalid start byte

报错原因:查阅资料,这句话的意思是遇到了utf-8无法解码的字节。

最可能的情况是:出现了错误数据,导致解码出错。需要查看自己的数据中是否存在错误文件

二、错误分析与解决

摆出代码:

song_path = os.path.join(AUDIO_FOLDER, str(int(song_id)) + SOUND_EXTENSION)
# print(song_path)
audio_file = tf.io.read_file(song_path)
waveforms, _ = tf.audio.decode_wav(contents=audio_file)  # 报错代码

根据报错信息显示:waveforms, _ = tf.audio.decode_wav(contents=audio_file)这句出错。
因此从该行代码往上进行错误排查:

  • 定位到audio_file

  • 定位到song_path

  • 此时,不妨将song_path打印出来:print(song_path)

  • 观察打印结果。如下图所示,当打印到10.wav时就停止打印并报错了,因此排查10.wav文件。

    原来,此处的10.wav文件当初是手动从10.mp3经过修改后缀得来的,这种方式使得文件出错,此时没有办法被正确读取。因此,笔者通过librosa+soundfile用4行代码,重新根据10.mp3生成了10.wav文件。

    想知道如何将MP3文件修改为wav文件的,可以查看笔者之前的文章《librosa实现音频格式转换(单曲&批量) | MP3转wav》

    在此,我们要在此强调一次,wav文件不要通过修改后缀的形式生成!虽然很方便,但是后续程序读取的时候很可能会出错。而且,通过librosa+soundfile,以代码的形式进行格式更改很方便速度也很快,生成的文件也不会出错,它不香嘛!

  • 修改后,重新运行代码。
    可以看到,print语句顺利地打印出了后面的wav信息,并且不再报错。说明报错确实是因为10.wav存在文件错误。

debug小技巧:善用print
根据print打印的信息可以帮助我们更好地看到程序执行的过程,从而与我们期望的结果进行比对,发现错误。

(本文完)


参考:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 0: invalid start byte

UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 41: invalid start byte相关推荐

  1. 解决UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte问题

    此文首发于我的个人博客:解决UnicodeDecodeError 'utf-8' codec can't decode byte 0xff in position 0 invalid start by ...

  2. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 0: invalid start byte ,mac

    从网上查了很多种方法*均对我的bug不是很奏效,可能因为我的.txt文件是.xls文件转的,且我要读取的文件只有6个,遂采取最brute的方法:把所有文件里的内容copy出来,放到新文件里即可. *方 ...

  3. pandas 读取csv : ‘utf-8‘ codec can‘t decode byte 0xff in position 0: invalid start byte

    问题描述 用python 读取csv文件时,报错utf-8' codec can't decode byte 0xff in position 0: invalid start byte 问题原因 打 ...

  4. [Solved] UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xff in position 0: invalid start byte

    1. with open(path, 'rb') as f:contents = f.read()2. with open(path, encoding="utf8", error ...

  5. ‘UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 0: invalid start byte‘成功解决

    今天在用pandas进行读取时出现了bug 出现这种情况的原因是:文件的编码不是 UTF8 编码的,而pandas读取文件时固定采用 UTF8 解码.解决方法是改为对应的解码方式. 解决的方式有两种: ...

  6. 调试错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

    代码: #-*-coding:utf-8-*- import tensorflow as tf import numpy as np import matplotlib.pyplot as plt f ...

  7. UnicodeDecodeError: 'utf8' codec can't decode byte 0xb1 in position 0: invalid start byte

    在Python处理字符编码时出现如下错误: UnicodeDecodeError: 'utf8' codec can't decode byte 0xb1 in position 0: invalid ...

  8. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb0 in position 0: invalid start byte

    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte

  9. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0x8b in position 1: invalid start byte

    当我们使用urllib库打印爬取的网页信息print(res.read().decode('utf-8'))出现: UnicodeDecodeError: 'utf-8' codec can't de ...

最新文章

  1. mysql存储引擎中INNODB和MyISAM的区别
  2. php获取日期中的月份,年份
  3. Ubuntu下绘图软件krita64位无中文问题
  4. 如何优雅地编写Java
  5. 基础 | 零散的MySql基础记不住,看这一篇就够啦
  6. python中的urllib库_Python2/3中的urllib库
  7. bzoj 2216: [Poi2011]Lightning Conductor(DP决策单调性)
  8. 3dmax如何导入ies灯
  9. 国际服务贸易重点整理
  10. 利用输入法输入汉字,如何统计字数
  11. 兰博基尼推出全新混动超跑Revuelto
  12. c--scanf()函数详解
  13. 第一台计算机是怎么输出,世界上第一台计算机是如何诞生的?
  14. linux ide sata硬盘,Linux 下SATA与IDE硬盘区别
  15. 大厦设计师 -- 建造者模式 (Builder Pattern) 介绍 使用案例场景分析 优缺点 及代码演示
  16. HTML font 标签的 size 属性
  17. 商业模式的逻辑--清华大学X-lab沈拓学习笔记
  18. Excel 中国式排名
  19. Ubuntu开机自启动(适用于ubuntu桌面、服务器、树莓派)
  20. 数列极限存在准则:夹逼准则

热门文章

  1. 解释器,一个交互式外壳
  2. USB研究(二)U盘驱动前的初始化
  3. (转载)Nim游戏博弈(收集完全版)
  4. 支付宝 app支付 沙盘使用
  5. 怎么申请电子邮箱?电子邮箱号码如何申请?
  6. 百度地图---点亮城市
  7. 关于神经网络训练的一些技巧NN Tricks
  8. ios静态库和代码同名_使用一个代码库开始制作NativeScript iOS和Android应用程序
  9. Camera相机API
  10. XboxOne的kinect在Unity上的开发——安装与调试