当前位置: 首页 > 知识库问答 >
问题:

语音识别程序零星工作

曾修真
2023-03-14

我不知道为什么,但它只是偶尔查找、转换和转录目录中的所有mp3文件,但从来没有100%的时间。我不知道为什么。我希望我的要求是正确的。我的目标是找到所有m4a文件,然后转换为wav文件,然后找到所有wav文件并转录它们。程序有时会执行此操作,但不是所有时间都执行此操作。

#!/usr/bin/env python3

    import speech_recognition as sr
    import time
    import subprocess
    import os
    from os import path
    from os import listdir


    # find and convert mp3 files to wav files

    # find all files with an extension, convert to wav files, transcribe to text file then transfer all wav files and mp3 files to finished directory and email transcribed files.

    # find files with mp3 extension

    def list_files1(directory, extension):
        ext = []
        for root, dirs, files in os.walk(directory):
            for file in files:
                if file.endswith(extension):
                    ext.append(file)
        print(ext)
        return ext


    # get directory path
    originalDir = os.getcwd()

    # call function to find files with mp3 extension
    mp3files = list_files1(originalDir, "m4a")

    # os.chdir("/Users/williamjohnson/Dropbox/goodscrapers/publimaison2/")

    # convert all mp3 files to wav files
    for x in mp3files:
        print(x)
        timestr = time.strftime("%Y%m%d-%H%M%S")
        command = "ffmpeg -i " + x + ' ' + timestr + ".wav"
        print(command)
        subprocess.call(command, shell=True)

    # find all converted wav files

    wavfiles = list_files1(originalDir, "wav")

    for y in wavfiles:
        print(y)
        # obtain path to "english.wav" in the same folder as this script
        AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), y)
        # AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "french.aiff")
        # AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "chinese.flac")

        # use the audio file as the audio source
        r = sr.Recognizer()
        with sr.AudioFile(AUDIO_FILE) as source:
            audio = r.record(source)  # read the entire audio file

        # recognize speech using Sphinx
        try:
            print("Sphinx thinks you said " + r.recognize_sphinx(audio))
            timestr = time.strftime("%Y%m%d-%H%M%S")
            text_file = open(timestr + ".txt", "a")
            text_file.write(r.recognize_sphinx(audio))
            text_file.close()
        except sr.UnknownValueError:
            print("Sphinx could not understand audio")
        except sr.RequestError as e:
            print("Sphinx error; {0}".format(e))

编辑:我犯了一个非常愚蠢的错误,我用相同的名称命名所有输出的文本文件,所以它们会被覆盖。我确保给它们一个唯一的名称,将名称降到毫秒,然后在文件名中添加一个随机数,以便更好地衡量。

共有1个答案

冯枫
2023-03-14

当您使用操作系统时。walk(),它返回没有任何目录的文件,因此您正在收集文件列表,但会丢弃其目录名。

您的包装器似乎没有在os.walk()添加任何值;无论如何,我都会重构以一次转换一个文件。相切地说,如果您不特别关心当前目录的绝对路径,您也不需要调用getcwd

import os

def get_next_file(directory, extension):
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(extension):
                yield os.path.join(root, file)

for x in get_next_file('.', 'm4a'):
    print(x)
 类似资料:
  • 本文向大家介绍c# 开发语音识别程序,包括了c# 开发语音识别程序的使用技巧和注意事项,需要的朋友参考一下 AI 平台:http://ai.baidu.com/ 开发工具:vs 2017 准备工作 1、注册百度账号 2、登录百度 AI 开发平台,http://ai.baidu.com/ 3、在控制台点击“百度语音”服务,点击“创建应用”,填写必填项,勾选额外接口,点击立即创建获取秘钥。在应用列表中

  • 由于连接到不同的API,我目前正在开发一个工具,允许我阅读所有的通知。 它工作得很好,但现在我想用一些声音命令来做一些动作。 就像当软件说“一封来自Bob的邮件”时,我想说“阅读”或“存档”。 我的软件是通过一个节点服务器运行的,目前我没有任何浏览器实现,但它可以是一个计划。 在NodeJS中,启用语音到文本的最佳方式是什么? 我在它上面看到了很多线程,但主要是使用浏览器,如果可能的话,我希望在一

  • 语音识别是以语音为研究对象,通过语音信号处理和模式识别让机器自动识别和理解人类口述的语言。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。语音识别是一门涉及面很广的交叉学科,它与声学、语音学、语言学、信息理论、模式识别理论以及神经生物学等学科都有非常密切的关系。语音识别技术正逐步成为计算机信息处理技术中的关键技术,语音技术的应用已经成为一个具有竞争性的新兴高技术产

  • 识别简单的语句。

  • 光环板内置的麦克风和Wi-Fi功能相结合,可以实现语音识别相关的应用。通过接入互联网,可以使用各大主流科技公司提供的语音识别服务,像是微软语音识别服务。使用联网功能需要登陆慧编程账号。 注册/登陆慧编程 点击工具栏右侧的登陆/注册按钮,依据提示登陆/注册账号。 启用上传模式 点击启用上传模式。 新建语音识别项目 我们将新建一个语音识别项目,使用语音来点亮光环板的LED灯。 连接网络 1. 添加事件

  • 1.1. ASR(语音识别) HTTP接口文档 1.1.1. 概述 1.1.2. 服务地址 1.1.3. 协议详解 1.1.4. HTTP API 接入参考Demo 1.1.5. 协议概述 1.1. ASR(语音识别) HTTP接口文档 1.1.1. 概述 本文档目的是描述Rokid云ASR(语音识别)Http接口协议,面向想要了解ASR细节,并具有一定开发能力的开发者或用户。 1.1.2. 服务