質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

受付中

out_dirを定義したい

masamasa123
masamasa123

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0グッド

0クリップ

737閲覧

投稿2021/11/06 15:30

#音声ファイルの分割
import wave
import struct
from scipy import fromstring,int16
import numpy as np
import os
import math
import speech_recognition as sr
import pandas as pd

一応既に同じ名前のディレクトリがないか確認。

file = os.path.exists("output2")
print(file)

if file == False:
#保存先のディレクトリの作成
os.mkdir("output2")
#filenameに読み込むファイル、timeにカットする間隔
def cut_wav(filename,time):
# timeの単位は[sec]

# ファイルを読み出し wavf = filename + '.wav' wr = wave.open(wavf, 'r') # waveファイルが持つ性質を取得 ch = wr.getnchannels() width = wr.getsampwidth() fr = wr.getframerate() fn = wr.getnframes() total_time = 1.0 * fn / fr integer = math.floor(total_time) # 小数点以下切り捨て t = int(time) # 秒数[sec] frames = int(ch * fr * t) num_cut = int(integer//t) # waveの実データを取得し、数値化 data = wr.readframes(wr.getnframes()) wr.close() X = np.frombuffer(data, dtype=int16) for i in range(num_cut+1): print(i) # 出力データを生成 outf = out_dir +'/' + str(1) + '.wav' start_cut = int(i*frames) end_cut = int(i*frames + frames) print(start_cut) print(end_cut) Y = X[start_cut:end_cut] outd = struct.pack("h" * len(Y), *Y) # 書き出し ww = wave.open(outf, 'w') ww.setnchannels(ch) ww.setsampwidth(width) ww.setframerate(fr) ww.writeframes(outd) ww.close() str_out="" list1=[wavf,"",""] df_x= pd.DataFrame([list1]) df_x.columns=["no","音声ファイル","変換"] for ii in range(num_cut+1): outf=out_dir +"/"+str(ii)+".wav" str_out=wav_to_text(outf) df_x.loc[ii]=[ii,str(ii)+ '.wav',str_out] #分割したファイルを受け取りた(output2というディレクトの.wavのこと)

def wav_to_text(wavfile):

r = sr.Recognizer() with sr.AudioFile('wavfile') as source: audio = r.record(source) text = r.recognize_google(audio, language='ja-JP') print(wav_to_text) return wav_to_text

print("input filename = output")
f_name = "10"
print("cut time = ")

cut_time = input()
cut_wav(f_name,float(cut_time))

以上のような設計をしましたが、name 'out_dir' is not dfinedと出てしまいます。
どこを手直しすればいいのか途方に暮れてしまっています。
ご教授の程よろしくお願いしたします

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2021/11/07 01:20

こちらの質問が他のユーザーから「過去の低評価」という指摘を受けました。

ukyoda

2021/11/06 15:56

これ、全部同じファイルに書かれたコードということでいいですか? ↑のコードをみた感じ、out_dirに値を入れる処理が見当たらないので、 `name 'out_dir' is not defined`とエラーが出ているのだと思います。 ちなみに、out_dirとはどういった類いの変数なのですか?
meg_

2021/11/06 16:31

コードは「コードの挿入」で記入してください。 エラーが発生したのはどの行ですか?
masamasa123

2021/11/07 01:08

はいこれは全て同じファイルに書きました。 out_dirは長めの音声ファイルを分割し、その保存先として指定するつもりでした。 ちなみに保存先のディレクトリの名前は'output2'と指定しました。
masamasa123

2021/11/07 01:10

meg_様 すいませんでした。 エラーが生じたのは#出力データを生成 というところの一行目のout_dirが定義されてないと出ました

回答1

0

Python

1out_dir = "output2" 2file = os.path.exists(out_dir) 3if file == False: 4 os.mkdir(out_dir)

とすれば良いかと思います。

投稿2021/11/07 01:20

meg_

総合スコア9762

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。