「Jsonから得るbase64の音声データを保存せず再生する方法」の版間の差分

提供:sufeeWiki
ナビゲーションに移動 検索に移動
ページの作成:「==概要== webapiから受け取った音声データを保存せずにバッファのみで再生する方法。<br> ※ただし以下の条件で行う ・base64でエンコードとasciiでデコードしたデータをそのままjson形式で受け取る。 ・受け取ったらその逆をして音声に復元する。 ・音声フォーマットはwavである。 ==コード==」
 
編集の要約なし
 
7行目: 7行目:


==コード==
==コード==
<syntaxhighlight lang="python3">
import requests
import base64
import sounddevice as sd
import wave
import io
import numpy as np
#API Access
res = requests.get("URL",timeout=60)
if res.status_code != requests.codes.ok:
  sys.exit()
#JSON GET
json_data = res.json()
#復元する asciiのバイトに変換のちbase64形式を戻す
audio = base64.b64decode((json_data["audio"]).encode("ascii"))
#ローカルのパス指定なのでioライブラリで渡す
wf = wave.open(io.BytesIO(audio))
fs = wf.getframerate()
data = wf.readframes(wf.getnframes())
data = np.frombuffer(data, dtype='int16')
#再生
sd.play(data, fs)
status = sd.wait()
#以上
</syntaxhighlight>

2022年11月15日 (火) 18:22時点における最新版

概要

webapiから受け取った音声データを保存せずにバッファのみで再生する方法。

※ただし以下の条件で行う
・base64でエンコードとasciiでデコードしたデータをそのままjson形式で受け取る。
・受け取ったらその逆をして音声に復元する。
・音声フォーマットはwavである。

コード

import requests
import base64
import sounddevice as sd
import wave
import io
import numpy as np

#API Access
res = requests.get("URL",timeout=60)
if res.status_code != requests.codes.ok:
  sys.exit()
#JSON GET
json_data = res.json()

#復元する asciiのバイトに変換のちbase64形式を戻す
audio = base64.b64decode((json_data["audio"]).encode("ascii"))

#ローカルのパス指定なのでioライブラリで渡す
wf = wave.open(io.BytesIO(audio))
fs = wf.getframerate()
data = wf.readframes(wf.getnframes())
data = np.frombuffer(data, dtype='int16')

#再生
sd.play(data, fs)
status = sd.wait()

#以上