广告
返回顶部
首页 > 资讯 > 操作系统 >Linux下怎么用python实现语音识别功能
  • 894
分享到

Linux下怎么用python实现语音识别功能

2023-07-05 20:07:35 894人浏览 八月长安
摘要

这篇文章主要介绍“linux下怎么用python实现语音识别功能”,在日常操作中,相信很多人在Linux下怎么用Python实现语音识别功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux下怎么用py

这篇文章主要介绍“linux下怎么用python实现语音识别功能”,在日常操作中,相信很多人在Linux下怎么用Python实现语音识别功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux下怎么用python实现语音识别功能”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

语音识别工作原理简介

语音识别源于 20 世纪 50 年代早期在贝尔实验室所做的研究。早期语音识别系统仅能识别单个讲话者以及只有约十几个单词的词汇量。现代语音识别系统已经取得了很大进步,可以识别多个讲话者,并且拥有识别多种语言的庞大词汇表。
语音识别的首要部分当然是语音。通过麦克风,语音便从物理声音被转换为电信号,然后通过模数转换器转换为数据。一旦被数字化,就可适用若干种模型,将音频转录为文本。
大多数现代语音识别系统都依赖于隐马尔可夫模型(HMM)。其工作原理为:语音信号在非常短的时间尺度上(比如 10 毫秒)可被近似为静止过程,即一个其统计特性不随时间变化的过程。
许多现代语音识别系统会在 HMM 识别之前使用神经网络,通过特征变换和降维的技术来简化语音信号。也可以使用语音活动检测器(VAD)将音频信号减少到可能仅包含语音的部分。
幸运的是,对于 Python 使用者而言,一些语音识别服务可通过 api 在线使用,且其中大部分也提供了 Python SDK。

选择合适的python语音识别包

PyPI中有一些现成的语音识别软件包。其中包括:
apiai
Google-cloud-speech
pocketsphinx
SpeechRcognition
watson-developer-cloud
wit
一些软件包(如 wit 和 apiai )提供了一些超出基本语音识别的内置功能,如识别讲话者意图的自然语言处理功能。其他软件包,如谷歌云语音,则专注于语音向文本的转换。
其中,SpeechRecognition 就因便于使用脱颖而出。
识别语音需要输入音频,而在 SpeechRecognition 中检索音频输入是非常简单的,它无需构建访问麦克风和从头开始处理音频文件的脚本,只需几分钟即可自动完成检索并运行。

安装SpeechRecognition

SpeechRecognition 兼容 Python2.6 , 2.7 和 3.3+,但若在 Python 2 中使用还需要一些额外的安装步骤。大家可使用 pip 命令从终端安装 SpeechRecognition:pip3 install SpeechRecognition

安装完成后可以打开解释器窗口进行验证安装:

Linux下怎么用python实现语音识别功能

注:不要关闭此会话,在后几个步骤中你将要使用它。
若处理现有的音频文件,只需直接调用 SpeechRecognition ,注意具体的用例的一些依赖关系。同时注意,安装 PyAudio 包来获取麦克风输入

识别器类

SpeechRecognition 的核心就是识别器类。
Recognizer API 主要目是识别语音,每个 API 都有多种设置和功能来识别音频源的语音,这里我选择的是recognize_sphinx(): CMU Sphinx - requires installing PocketSphinx(支持离线的语音识别
那么我们就需要通过pip命令来安装PocketSphinx,在安装过程中也容易出现一大串红色字体的错误。

音频文件的使用

下载相关的音频文件保存到特定的目录(直接保存到ubuntu桌面)
注意:
AudioFile 类可以通过音频文件的路径进行初始化,并提供用于读取和处理文件内容的上下文管理器界面。
SpeechRecognition 目前支持的文件类型有:

  • WAV: 必须是 PCM/LPCM 格式

  • AIFF

  • AIFF-CFLAC: 必须是初始 FLAC 格式;OGG-FLAC 格式不可用

英文的语音识别

在完成以上基础工作以后,就可以进行英文的语音识别了。
(1)打开终端
(2)进入语音测试文件所在目录(博主的是 桌面)
(3)打开python解释器
(4)按照下图输入相关命令

Linux下怎么用python实现语音识别功能

最后就可以看到语音转文字的内容(this they’ll smell …),其实效果还是很不错的!因为是英文,并且没有噪音。

噪音对语音识别的影响

噪声在现实世界中确实存在,所有录音都有一定程度的噪声,而未经处理的噪音可能会破坏语音识别应用程序的准确性。
通过尝试转录效果并不好,我们可以通过尝试调用 Recognizer 类的adjust_for_ambient_noise()命令。

麦克风的使用

若要使用 SpeechRecognizer 访问麦克风则必须安装 PyAudio 软件包。
如果使用的是基于 Debian的Linux(如 Ubuntu ),则可使用 apt 安装 PyAudio:sudo apt-get install python-pyaudio python3-pyaudio安装完成后可能仍需要启用 pip3 install pyaudio ,尤其是在虚拟情况下运行。
在安装完pyaudio的情况下可以通过python实现语音录入生成相关文件。
pocketsphinx的使用注意:
支持文件格式:wav
音频文件的解码要求:16KHZ,单声道
利用python实现录音并生成相关文件程序代码如下:

from pyaudio import PyAudio, paInt16import numpy as npimport waveclass recoder:     NUM_SAMPLES = 2000        SAMPLING_RATE = 16000       LEVEL = 500          COUNT_NUM = 20        SAVE_LENGTH = 8          Voice_String = []     def savewav(self,filename):         wf = wave.open(filename, 'wb')         wf.setnchannels(1)         wf.setsampwidth(2)         wf.setframerate(self.SAMPLING_RATE)         wf.writeframes(np.array(self.Voice_String).tostring())         wf.close()     def recoder(self):         pa = PyAudio()         stream = pa.open(fORMat=paInt16, channels=1, rate=self.SAMPLING_RATE, input=True,frames_per_buffer=self.NUM_SAMPLES)         save_count = 0         save_buffer = []         while True:            string_audio_data = stream.read(self.NUM_SAMPLES)            audio_data = np.fromstring(string_audio_data, dtype=np.short)            large_sample_count = np.sum(audio_data > self.LEVEL)            print(np.max(audio_data))            if large_sample_count > self.COUNT_NUM:                save_count = self.SAVE_LENGTH            else:                save_count -= 1            if save_count < 0:                save_count = 0            if save_count > 0:                save_buffer.append(string_audio_data )            else:                if len(save_buffer) > 0:                    self.Voice_String = save_buffer                    save_buffer = []                    print("Recode a piece of voice successfully!")                    return True else:                    return Falseif __name__ == "__main__":    r = recoder()    r.recoder()    r.savewav("test.wav")

注意:在利用python解释器实现时一定要注意空格!!!
最后生成的文件就在Python解释器回话所在目录下,可以通过play来播放测试一下,如果没有安装play可以通过apt命令来安装。

中文的语音识别

在进行完以前的工作以后,我们对语音识别的流程大概有了一定的了解,但是作为一个中国人总得做一个中文的语音识别吧!

我们要在CMU Sphinx语音识别工具包里面下载对应的普通话升学和语言模型。

Linux下怎么用python实现语音识别功能

图片中标记的就是普通话!下载相关的语音识别工具包。

但是我们要把zh_broadcastnews_64000_utf8.DMP转化成language-model.lm.bin,再解压zh_broadcastnews_16k_ptm256_8000.tar.bz2得到zh_broadcastnews_ptm256_8000文件夹。
借鉴刚才那位博主的方法,在Ubuntu下找到speech_recognition文件夹。可能会有很多小伙伴找不到相关的文件夹,其实是在隐藏文件下。大家可以点击文件夹右上角的三条杠。如下图所示:

Linux下怎么用python实现语音识别功能

然后给显示隐藏文件打个勾,如下图所示:

Linux下怎么用python实现语音识别功能

然后依次按照以下目录就可以找到啦:

Linux下怎么用python实现语音识别功能

然后把原来的en-US改名成en-US-bak,新建一个文件夹en-US,把解压出来的zh_broadcastnews_ptm256_8000改成acoustic-model,把chinese.lm.bin改成language-model.lm.bin,把pronounciation-dictionary.dic改后缀成dict,复制这三个文件到en-US里。同时把原来en-US文件目录下的LICENSE.txt复制到现在的文件夹下。
最终该文件夹下有以下文件:

Linux下怎么用python实现语音识别功能

然后我们就可以通过麦克风录入一个语音文件文件(“test.wav”)
在该文件目录下打开python解释器输入以下内容:

Linux下怎么用python实现语音识别功能

就看到了输出内容,但是我说的是两个中国,也测试了一下其他的发现识别效果很不好!!!

小范围中文识别

用官方提供的效果太差,几乎不能用!那么我看了很多文章以后就想到了一种优化方法,但是只适合小范围的识别!一些命令啥的应该没有问题,但是聊天什么的可能就效果不太好。
找到刚才复制的4个文件夹,有一个pronounciation-dictionary.dict的文件夹,打开以后是以下内容:

Linux下怎么用python实现语音识别功能

感觉这内容就是类似于一个字典,很多用词和平时交流的用词差距比较大。那么我们改成我们习惯的用词就可以啦! 抱着试一试的想法,结果还真的可以。识别效果真的不错!
我的做法是:
(1)把图片中红色标记以上的内容继续保留,红色以下的内容删除掉。当然处于保险考虑建议大家给该文件备份一下!
(2)给红色线以下输入自己想识别的内容!(按照规则输入,不同于拼音!!!)最近新型肺炎的情况不断的变好,听到最多的一句话就是“中国加油”那么今天的内容就是将“中国加油”实现语音转文字!希望能早日开学,哈哈哈哈。

Linux下怎么用python实现语音识别功能

3)输入以下内容:

Linux下怎么用python实现语音识别功能

语音合成

语音合成个人的理解就是文字转语音。不过这句话中可以设置client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) result = client.synthesis('你好百度', 'zh', 1, { 'vol': 5,'spd': 3,'pit':9,'per': 3})音量、声调、速度、男/女/萝莉/逍遥。

到此,关于“Linux下怎么用python实现语音识别功能”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Linux下怎么用python实现语音识别功能

本文链接: https://www.lsjlt.com/news/354901.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux下怎么用python实现语音识别功能
    这篇文章主要介绍“Linux下怎么用python实现语音识别功能”,在日常操作中,相信很多人在Linux下怎么用python实现语音识别功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux下怎么用py...
    99+
    2023-07-05
  • android语音识别功能怎么实现
    要实现Android平台的语音识别功能,可以使用Android提供的语音识别API,具体步骤如下: 在AndroidManife...
    99+
    2023-10-22
    android
  • 基于C#怎么实现语音识别功能
    今天小编给大家分享一下基于C#怎么实现语音识别功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在.NET4.0中,我可以借...
    99+
    2023-06-30
  • Linux下利用python实现语音识别详细教程
    目录语音识别工作原理简介选择合适的python语音识别包安装SpeechRecognition识别器类音频文件的使用英文的语音识别噪音对语音识别的影响麦克风的使用中文的语音识别小范围中文识别语音合成语音识别工作原理简介 ...
    99+
    2023-03-31
    Linux利用python实现语音识别 python语音识别
  • Python如何进行语音识别,语音转换功能实现
    Python如何进行语音识别,语音转换功能实现,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。相信大家都非常喜欢那些萝莉音,看那些女装大佬,开一个变声器声音实在是很有诱惑力,下面...
    99+
    2023-06-02
  • win7系统下怎么关闭语音识别功能
    小编给大家分享一下win7系统下怎么关闭语音识别功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!打开控制面板,点击“轻松访问”。进入之后点击“语言识别”选项,进...
    99+
    2023-06-27
  • Python3.7 + Yolo3怎么实现识别语音播报功能
    这篇文章将为大家详细讲解有关Python3.7 + Yolo3怎么实现识别语音播报功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、利用Python调用系统win10...
    99+
    2023-06-22
  • Python中怎么实现语音识别
    今天就跟大家聊聊有关Python中怎么实现语音识别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。离线转换对于国内的网络环境,无法用google API来将语音数据转换成文本文件,因为...
    99+
    2023-06-16
  • Unity如何实现语音识别功能
    小编给大家分享一下Unity如何实现语音识别功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!现在语音识别已经被广泛的应用到各个领域中,在Unity开发中,语音识...
    99+
    2023-06-15
  • 轻松实现Android语音识别功能
    苹果的iphone有语音识别用的是Google的技术,做为Google力推的Android 自然会将其核心技术往Android 系统里面植入,并结合google 的云端技术将其...
    99+
    2022-06-06
    Android
  • 详解Unity 实现语音识别功能
    现在语音识别已经被广泛的应用到各个领域中,在Unity开发中,语音识别也非常受欢迎。大部分人都会选择科大讯飞的语音识别功能,但是在一些小的项目中,使用科大讯飞的就有点大材小用了。今天...
    99+
    2022-11-12
  • Python3.7+Yolo3实现识别语音播报功能
    一、利用Python调用系统win10的文字转语音 首先下载需要用到的库:pip install pyttsx3 -i https://mirrors.aliyun.com/pypi...
    99+
    2022-11-12
  • Java中怎么通过调用jna实现语音识别功能
    Java中怎么通过调用jna实现语音识别功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JNAjava调用.dll获取.so一般通过JNI,但是JNI的使用比较复杂,需要用C...
    99+
    2023-06-17
  • 基于C#实现语音识别功能详解
    在.NET4.0中,我可以借助System.Speech组件让电脑来识别我们的声音。 以上,当我说"name",显示"Darren",我说&...
    99+
    2022-11-13
  • Java离线中文语音文字识别功能怎么实现
    这篇文章主要讲解了“Java离线中文语音文字识别功能怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java离线中文语音文字识别功能怎么实现”吧!1、pom文件如下:<xml&n...
    99+
    2023-07-02
  • Python调用百度api怎么实现语音识别
    Python调用百度api怎么实现语音识别,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。最近在学习python,做一些python练习题github上几年前的练习题有一题是这样...
    99+
    2023-06-21
  • win8怎么开启语音识别功能无需联网即可识别
    win8系统在发布的时候公布了许多的新功能,也相对之前的系统版本做出了很大改动,不知道大家有没有发现win8有一个语音识别的功能,据小编测试可以不用联网识别,而且win8还表示可以随着使用变得更加智能,需要...
    99+
    2022-06-04
    语音识别 功能
  • 如何启动使用Win8语音识别功能实现无鼠标语音操作
      或许我们已经习惯了用鼠标在Windows系统中进行操作,但实际上Windows 8中自带的语音控制功能完全可以实现我们“无鼠标”语音操作。   如何启动语音识别功能   首先,用户需要准备一部...
    99+
    2023-06-04
    Win8 语音控制 无鼠标 鼠标 语音 功能
  • 怎么用Python代码实现文字识别功能
    今天小编给大家分享一下怎么用Python代码实现文字识别功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.环境和配置要求...
    99+
    2023-06-30
  • 怎么在微信小程序中利用同声传译实现语音识别功能
    这篇文章给大家介绍怎么在微信小程序中利用同声传译实现语音识别功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。// app.json{    ... &nbs...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作