オーディオファイル(可能であればwavとmp3)を再生し、再生速度をリアルタイムで完璧に変更する方法を提供するソフトウェアを探しています。つまり、ギャップ、ポップ、ノイズはありません。サンプリングクロックのようにスムーズに変化します。
私はピッチを一定に保つことに興味がありません(この質問のように: サウンドファイルを遅くまたは速く再生する )。代わりに、ピッチは新しい速度に従わなければなりません。
プログラムで速度を変更する必要があります。たとえば、元の速度の20%から200%に変更します。
車輪の再発明をせずに、何か準備ができていますか?
mplayer
はwav
およびmp3
ファイルを再生できます。また、キー[
および]
を使用してインタラクティブに速度を変更できますが、wavファイルは低速で再生できません元の速度よりも。 vlc
も同じことができ、wav
ファイルの速度も低下します。より速い速度は周波数を上げます。
mplayer -af scaletempo -speed 0.5 filename.mp3
を使用すると、 オーディオピッチ を変更せずに再生速度を変更できます。
(コマンドラインからmplayerを呼び出した後)実際のタイマーで速度を変更したい場合は、 スレーブモード で実行プレーヤーを作成する必要があります。
class SimpleMplayerPlayer(SimpleProcessPlayer, SoundOrVideoPlayer):
args, env = _packagedCmd(["mplayer", "-really-quiet", "-noautosub"])
if isWin:
args += ["-ao", "win32"]
class SimpleMplayerSlaveModePlayer(SimpleMplayerPlayer):
def __init__(self, taskman: TaskManager):
super().__init__(taskman)
self.args.append("-slave")
def _play(self, tag: AVTag) -> None:
assert isinstance(tag, SoundOrVideoTag)
self._process = subprocess.Popen(
self.args + [tag.filename],
env=self.env,
stdin=subprocess.PIPE,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
startupinfo=startup_info(),
)
self._wait_for_termination(tag)
def command(self, *args: Any) -> None:
"""Send a command over the slave interface.
The trailing newline is automatically added."""
str_args = [str(x) for x in args]
if self._process:
self._process.stdin.write(" ".join(str_args).encode("utf8") + b"\n")
self._process.stdin.flush()
def seek_relative(self, secs: int) -> None:
self.command("seek", secs, 0)
def toggle_pause(self) -> None:
self.command("pause")
コマンドラインから速度を設定する必要がある場合は、-speed SPEED
オプションを使用します。
mplayer -speed 0.1 file
注:この速度は、[
キーと]
キーを使用してリアルタイムで変更できます。
もちろん、mpv
でも機能します。
クレジット: https://linuxacademy.com/blog/linux/tutorial-playing-around-with-mplayer/